MySQL, Een Database Server

ArticleCategory: [Choose a category for your article]

SoftwareDevelopment

AuthorImage:[Here we need a little image from you]

[Jose M. Fernandez]

TranslationInfo:[Author and translation history]

original in es Jose M. Fernández

es to en Jose M. Fernández

en to nl Christ Verschuren

AboutTheAuthor:[A small biography about the author]

Abstract:[Here you write a little summary]

MySQL is een SQL (Structured Query Language) database server die ondersteund wordt op een aantal platforms, waaronder Linux. De Linux versie is ontworpen met een hoge performance als doel.

ArticleIllustration:[This is the title picture for your article]

[Illustratie]

ArticleBody:[The article body]

Inleiding

MySQL is een SQL (Structured Query Language) database server. Het is een client-server applicatie bestaande uit een server en een aantal clients.

De bespreking van een SQL database is erg complex omdat je terug zou moeten gaan naar de oorsprong van de relationele databases en het oogmerk van dit artikel is niet zo ambitieus, we willen enkel een specifieke toepassing van een SQL server beschrijven en demonstreren.

Als historische achtergrond moeten we vermelden dat IBM SQL in 1981 op de markt bracht en sindsdien heeft het product een fundamentele rol gehad in de ontwikkeling van relationele databases. IBM heeft een versie van SQL aangeboden aan het American National Standards Institute (ANSI), die later werd gestandaardiseerd, en daarna heeft het algemene toepassing gevonden in relationele databases. DB2, op dit moment de meest populaire database van dit type, is ontwikkeld in 1983 en wordt over het algemeen gebruikt in mainframe omgevingen.

In de GNU wereld is MySQL een van de meest genoemde databases, als het gaat over relationele databases onder Linux. Deze toepassing is niet beschikbaar in een van de Linux distributies, omdat het geen zuivere GNU licentie kent; commercieel gebruik van MySQL of een andere toepassing die er gebruik van maakt, vraagt om de aanschaf van een licentie.

Deze database server wordt beschouwd als (en dit wordt expliciet genoemd in de documentatie) een van de snelste en meest robuuste voor grote en kleine hoeveelheden data (uiteraard vergeleken met andere database servers in deze categorie). Zoals we later zullen bespreken, wordt de verwerkingssnelheid bereikt ten koste van het niet implementeren van een aantal faciliteiten van de SQL standaard.

MySQL is beschikbaar (Broncode en Binair bestand) voor: Linux 2.0+, SCO, Solaris 2.5, 2.6, SUNOS 4.x, BSDI 2.x, 3.0, SGI IRIX 6.x, AIX 4.x, DEC UNIX 4.x, HPUX 10.20, Windows 95 (excuseer me).

De vrije versie is geschreven door Michael Windenis, en de commerciële versie wordt gedistribueerd door TCX Datakonsulter AB.

Belangrijkste Karakteristieken

Installatie

Voordat je de database gaat installeren moet je uiteraard eerst de broncode downloaden van het WEB:

http://www.tcx.se


of van FTP :
ftp://ftp.sunet.se/pub/unix/databases/relational/mysql

Eerst moeten we beslissen of we broncode gaan downloaden of een binair bestand. De laatste optie is het eenvoudigst te installeren, maar moet wel beschikbaar zijn voor het gewenste platform (en is inderdaad beschikbaar voor de populairste platforms).

Binaire Installatie

Na het downloaden van het bestand:

mysql-Version.tar.gz

ga je het uitpakken. Dit kan op verschillende manieren, persoonlijk geef ik de voorkeur aan:

  1. eerst decomprimeren :
    gunzip -dfv mysql-Version.tar.gz
  2. pak dan de bestanden uit, uit het archiefbestand:
    tar -xvf mysql-Version.tar

    Ik voer de tar opdracht uit vanuit de directory /usr/local, zodat de bestanden worden teruggevonden in
    /usr/local/mysql-3.20.32a-pc-linux-gnu-i586

    Dit is geen erg praktische naam, daarom wordt aangeraden (althans dat wordt vermeld in de installatie handleiding) een symbolische link te maken naar deze locatie

    > ln -s mysql-3.20.32a-pc-linux-gnu-i586/bin mysql

    De mysql directory bevat het volgende:

    drwxr-xr-x 8192 Nov 24 1993 bin
    drwxr-xr-x 8192 Nov 24 1993 etc
    drwxr-xr-x 8192 Aug 17 1997 i18n
    drwxr-xrx 8192 Mar 16 1994 include
    drwxr-xr-x 8192 Mar 19 02:03 jdk1.1.3
    drwxr-xr-x 8192 Aug 17 1997 jre
    drwxr-xr-x 8192 Mar 16 1994 lib
    lrwxrwxrwx 36 Jan 18 19:40 mysql
    drwxr-xr-x 8192 Feb 5 00:07 mysql-3.20.32a-pc-linux-gnu-i586
    drwxr-xr-x 8192 Nov 24 1993 sbin
    drwxr-xr-x 8192 Nov 24 1993 src

    met de opdracht cd mysql gaan we naar de directory met de bestanden van MySQL. Als alles goed gegaan is zijn we nu klaar om de database server te starten.

Installeren van de broncode

Decomprimeer en pak de broncode uit,zoals aangegeven in de vorige paragraaf.

cd mysql-Version
./configure
make install

De broncode distributie bevat een grote hoeveelheid documentatie over het installatie proces. Er is informatie over bekende bugs, platform specifieke aantekeningen en tips voor de verschillende besturingssystemen, beschrijvingen van parameters voor verschillende configuraties en zelfs een verzameling Veel Gestelde Vragen (FAQ). Als het installatie proces goed gaat is het resultaat een directory met bestanden, zoals hiervoor beschreven.

Een installatie vanuit de broncode wordt alleen aanbevolen voor gebruikers met ervaring in het installeren en compileren van programma's en die voldoende tijd en geduld hebben om de problemen die zich ongetwijfeld zullen voordoen tijdens de procedure te kunnen oplossen.

De Eerste Stappen: Beheer (Beveiliging)

Na de installatie van de server op je systeem volgens een van de hiervoor beschreven methoden, moet de volgende directory :

/usr/local/mysql-3.20.32a-pc-linux-gnu-i586

de navolgende bestanden en directories bevatten:

-rw-r--r-- 1 root root 4133 Oct 1 1997 INSTALL-BINARY
-rw-r--r-- 1 root root 16666 Oct 7 21:10 INSTALL-SOURCE
-rw-r--r-- 1 root root 24088 Oct 27 23:06 NEWS
-rw-r--r-- 1 root root 3562 Apr 11 1997 PORTING
-rw-r--r-- 1 root root 8512 May 21 1997 PUBLIC
-rw-r--r-- 1 root root 1963 Jul 31 1997 README
-rw-r--r-- 1 root root 3416 Jun 4 1997 TODO
drwxr-xr-x 6 root root 8192 Oct 28 00:44 bench
drwxr-xr-x 2 cuenta1 users 8192 Mar 27 00:42 bin
drwxr-xr-x 5 root root 8192 Mar 31 00:26 data
drwxr-xr-x 2 root root 8192 Oct 28 00:44 include
drwxr-xr-x 2 root root 8192 Oct 28 00:44 lib
-rw-r--r-- 1 root root 132883 Jun 8 1997 mysql-faq.html
-rw-r--r-- 1 root root 117622 Jun 10 1997 mysql-faq.txt
-rw-r--r-- 1 root root 9301 Jun 8 1997 mysql-faq_toc.html
drwxr-xr-x 4 root root 8192 Oct 28 00:44 mysqlperl
drwxr-xr-x 2 root root 8192 Oct 28 00:44 scripts
drwxr-xr-x 3 root root 8192 Oct 28 00:44 share
drwxr-xr-x 2 root root 8192 Oct 28 00:44 tests

Voor meer informatie over het installeren van de server kun je gebruik maken van de bestanden README, TODO, INSTALL, mysql-faq, etc., die erg compleet en effectief zijn (dit artikel is er deels op gebaseerd).

In de directory /data zullen de databases worden bewaard die je aanmaakt, ze worden opgeslagen in aparte subdirectories. De oorspronkelijke installatie maakt standaard de archeven aan die de beveiligingsfuncties van de server bevatten, dit is de database “mysql”.

Verschillende voorbeelden van SQL vindt je in /bench . Installaties vanuit de broncode bevatten een groter aantal voorbeelden dan die vanuit een binair bestand.

De directory /share bevat de foutmeldingen van de server voor elk van de beschikbare talen.

/include en /lib bevatten de systeembestanden en bibliotheken van de distributie.

Zoals verwacht bevat /bin alle uitvoerbare bestanden, waarvan de belangrijkste zijn:


`mysql'

Een SQL Shell. Het kan interactief gebruikt worden of niet.


`mysqladmin'

Beheer hulpmiddelen. Aanmaken/Verwijderen van databases. Informatie over processen en de programmaversie.


`mysqld'

SQL “deamon”. Deze moet altijd opgestart zijn.


`mysqlshow'

Toont informatie over een database, tabel of veld.


`safe_mysqld'

Start “mysqld”.


`mysqlaccess'

Script om de rechten van de combinatie: Computer, gebruiker en database, te controleren.


`mysqlbug'

Wordt gebruikt om gevonden fouten in de server te rapporteren.


`mysql_install_db'

Maakt grote tabellen aan met standaard rechten, en wordt gewoonlijk gedraaid na een eerste installatie op een nieuw systeem.


`isamchk'

Controleert, optimaliseert en repareert tabellen.

Beveiliging

Het beveiligingssysteem van MySQL waarborgt dat elke gebruiker alleen taken kan uitvoeren waarvoor hij geautoriseerd is (niet meer en niet minder).

Het systeem kiest de rechten voor een transactie conform de volgorde: “WELKE GEBRUIKER” vanaf “WELKE COMPUTER” verbinding maakt met een “GEGEVEN DATABASE”. Het rechtensysteem is gebaseerd op de inhoud van de 3 tabellen, “USER”, “HOST” en “DB” van de database “mysql”.


De kolommen van deze drie tabellen zijn:

Database: mysql
Tables
db
host
user


Table: db
Field Type Null Key Default Extra
Host char(60) PRI
Db char(32) PRI
User char(16) PRI
Select_priv char(1) N
Insert_priv char(1) N
Update_priv char(1) N
Delete_priv char(1) N
Create_priv char(1) N
Drop_priv char(1) N

Table: host
Field Type Null Key Default Extra
Host char(60) PRI
Db char(32) PRI
Select_priv char(1) N
Insert_priv char(1) N
Update_priv char(1) N
Delete_priv char(1) N
Create_priv char(1) N
Drop_priv char(1) N

Table: user
Field Type Null Key Default Extra
Host char(60) PRI
User char(16) PRI
Password char(16)
Select_priv char(1) N
Insert_priv char(1) N
Update_priv char(1) N
Delete_priv char(1) N
Create_priv char(1) N
Drop_priv char(1) N
Reload_priv char(1) N
Shutdown_priv char(1) N
Process_priv char(1) N
File_priv char(1) N

Je kunt zelf beslissen of je SELECT, INSERT, UPDATE en DELETE acties wil toestaan voor velden in een tabel.

Het is ook mogelijk om CREATE of DROP (verwijder) acties al dan niet toe te staan voor tabellen of databases.

Een andere interessante mogelijkheid is om beheeracties als “shutdown”, “reload”, “process”, etc. toe te staan.

De bestaande rechten kunnen worden geïnspecteerd met het script “mysqlaccess”.

Een HOST moet altijd een “local host”, een IP nummer of een SQL expressie zijn. Als in tabel “db” de host kolom leeg is, betekent dat “elke host” in de tabel “host”. Als aan de andere kant in de tabel “host” of “user” de kolom host leeg is betekent dat dat elke HOST een TCP verbinding met onze server tot stand mag brengen.

Db is de naam van de database.

Een lege “USER” kolom betekent elke gebruikernaam.

Eerste Stappen

De snelste manier om de server te starten is de volgende opdracht:

mysql.server start

en om hem te stoppen:

mysql.server stop

Dezelfde opdrachten kunnen ook worden uitgevoerd met het script safe_mysql, zoals aangegeven in de installatie handleiding, maar op welke manier dan ook het resultaat is altijd het uitvoeren van het bestand “mysqld”.

Zoals je zult begrijpen is het noodzakelijk de server te starten, alvorens je enige opdracht kunt uitvoeren op de database; als de server draait kunnen we opdrachten geven als “mysqladmin” waarvan de syntax als volgt luidt:

mysqladmin [OPTIONS] command command …

de mogelijke OPTIONS zijn:

-f, --force Vraagt niet om bevestiging van de gebruiker bij het verwijderen van een tabel.
-?, --help Toont het aanwezige help menu .
-h, --host=# Verbinding maken met de host.
-p, --password[=...] Wachtwoord toegang tot de server.
-P --port=... Het te gebruiken poortnummer voor de verbinding.
-S --socket=... Socket bestand te gebruiken voor de verbinding
-u, --user=# Gebruiker voor de verbinding indien niet gelijk aan de actuele gebruiker.
-V, --version Toont informatie over de server versie .

waarbij command een van de volgende opdrachten kan zijn: