Det här är ett avsnitt i en webbkurs om databaser som finns fritt tillgänglig på adressen http://www.databasteknik.se/webbkursen/. Senaste ändring: 16 juli 2005.

Av Thomas Padron-McCarthy. Copyright, alla rättigheter reserverade, osv. Skicka gärna kommentarer till webbkursen@databasteknik.se.

Introduktion till MySQL

Det här avsnittet beskriver en äldre version av MySQL. Motsvarande kapitel i boken Databasteknik är uppdaterat med information om de senaste versionerna.

MySQL är en gratis databashanterare. Den är snabb och driftsäker, men har inte alla avancerade funktioner som en del andra databashanterare har. Den finns tillgänglig för de flesta vanliga operativsystemen, inklusive Windows, Linux och Solaris. Den kan användas till många olika saker, men den har blivit särskilt populär för webbplatser som behöver lagra data i en databas. En del produkter, till exempel Roxen WebServer 2.2 (kan laddas ner gratis från http://download.roxen.com/) innehåller en MySQL-server som hanterar interna data.

Läs mer på MySQLs egna webbsidor, http://www.mysql.com/:

Om MySQL

MySQL är ett client/server-system. Det betyder att man startar ett serverprogram ("servern") på en dator (som ibland också kallas "servern"), och sen är det programmet igång hela tiden och hanterar databasen. Det finns flera olika klientprogram som erbjuder olika användargränssnitt. Till exempel kan man använda Microsoft Access för att prata med MySQL via ODBC.

MySQL finns också i en variant som inte använder client/server-arkitekturen. Om man bygger ett program som använder sig av MySQL för att lagra sina data, så kan man stoppa in hela MySQL-servern i själva programmet, och behöver inte krångla med att ha en separat server.

MySQL är fri mjukvara ("free software"). Den kan laddas hem och användas gratis, och man får både titta på källkoden och göra egna ändringar. Men det finns vissa begränsningar på vad man får göra. Om man gör egna ändringar i källkoden, så får man till exempel inte distribuera programmet utan att göra källkoden tillgänglig för alla. Vill man göra saker som inte tillåts av reglerna för fri mjukvara, måste man betala licensavgifter till MySQL AB.

Plus och minus

MySQL är känd för att vara både mycket snabb och driftsäker, och dessutom enkel att använda och administrera. En del av den snabbheten, driftsäkerheten och enkelheten beror förmodligen på att MySQL saknar en del mer avancerade funktioner.

En reklambroschyr om MySQL skulle förmodligen ta upp de här punkterna:

Några funktioner som många relationsdatabashanterare brukar ha, men som MySQL (än så länge) inte har:

MySQL har, men det kräver visst arbete av användaren:

Linux-exempel

Här är ett exempel på hur man installerar och använder MySQL på Linux.

Jag börjar med att ladda ner den senaste stabila versionen av MySQL från www.mysql.com, När jag skriver det här heter den 3.23. Filen som jag laddar hem heter "mysql-3.23.51-pc-linux-gnu-i686.tar.gz".

Sen läser jag i manualen hur man gör när man installerar MySQL. Alltså använder jag kommandot su för att bli root (eller "administratör", som Windows-användare skulle säga), matar in rootlösenordet, och ger de kommandon som står i manualen:

groupadd mysql
useradd -g mysql mysql
cd /usr/local
tar xvzf
gunzip < mysql-3.23.51-pc-linux-gnu-i686.tar.gz | tar xvf -
ln -s mysql-3.23.51-pc-linux-gnu-i686 mysql
cd mysql
scripts/mysql_install_db
chown -R root  .
chown -R mysql data
chgrp -R mysql .
bin/safe_mysqld --user=mysql &

Nu är MySQL-servern installerad och igång. Vi vill också att MySQL-servern ska startas automatiskt varje gång datorn startas. Det kan göras på flera olika sätt, men jag väljer att lägga till följande rader i filen "/etc/rc.d/rc.local":

echo Starting MySQL...
(cd /usr/local/mysql; ./bin/safe_mysqld --user=mysql &)

Nu har MySQL-servern inga lösenord satta, så vem som helst på den lokala datorn (men inte via nätet från andra datorer) kan logga in eller administrera servern. Därför sätter vi genast ett lösenord med dessa två kommandon:

./bin/mysqladmin -u root -p password SpGlk2Az
./bin/mysqladmin -u root -h racerbrontosaurus -p password SpGlk2Az

"SpGlk2Az" är det nya lösenordet, och "racerbrontosaurus" är servermaskinens namn.

Skapa en egen databas att arbeta med:

./bin/mysqladmin -u root -p create min_nya_databas

Anslut till databasen med ett SQL-textgränssnitt:

./bin/mysql -u root -p min_nya_databas

Nu kan vi använda SQL för att skapa tabeller, mata in data, och ställa frågor. Användarens inmatning visas här med fetstil:

mysql> create table Person
    -> (Nummer integer not null,
    -> Namn varchar(30),
    -> Telefon varchar(30),
    -> primary key (Nummer));
Query OK, 0 rows affected (0.00 sec)

mysql> insert into Person (Nummer, Namn, Telefon)
    -> values (17, 'Hjalmar', '174590');
Query OK, 1 row affected (0.00 sec)

mysql> insert into Person (Nummer, Namn, Telefon)
    -> values (17, 'Hulda', '019-94639');
ERROR 1062: Duplicate entry '17' for key 1
mysql> insert into Person (Nummer, Namn, Telefon)
    -> values (4711, 'Hulda', '019-94639');
Query OK, 1 row affected (0.00 sec)

mysql> select * from Person;
+--------+---------+-----------+
| Nummer | Namn    | Telefon   |
+--------+---------+-----------+
|     17 | Hjalmar | 174590    |
|   4711 | Hulda   | 019-94639 |
+--------+---------+-----------+
2 rows in set (0.00 sec)

mysql>                      


Webbkursen om databaser av Thomas Padron-McCarthy.