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.
|
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/:
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.
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:
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>