Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 102226 Details for
Bug 155519
[nl] mysql-howto.xml
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
mysql-howto
mysql-howto.xml (text/xml), 31.91 KB, created by
Thomas Wouters
on 2006-11-17 13:33:57 UTC
(
hide
)
Description:
mysql-howto
Filename:
MIME Type:
Creator:
Thomas Wouters
Created:
2006-11-17 13:33:57 UTC
Size:
31.91 KB
patch
obsolete
><?xml version="1.0" encoding="UTF-8"?> ><!DOCTYPE guide SYSTEM "/dtd/guide.dtd"> ><!-- $Header: >/var/www/www.gentoo.org/raw_cvs/gentoo/xml/htdocs/doc/en/mysql-howto.xml,v 1.7 >2006/09/13 14:19:26 jkt Exp $ --> > ><metadoc lang="en" parent="/doc/en/mysql-howto.xml"> ><guide link="/doc/en/mysql-howto.xml"> ><title>MySQL Starters Gids</title> > ><author title="Author"> > <mail link="chriswhite@gentoo.org">Chris White</mail> ></author> ><author title="Editor"> > <mail link="fox2mike@gentoo.org">Shyam Mani</mail> ></author> ><author title="Editor"> > <mail link="neysx@gentoo.org">Xavier Neys</mail> ></author> ><author title="Translator"> > <mail link="walterdelaat@telenet.be">Walter De Laat</mail> ></author> ><author title="Translator"> > <mail link="thomaswouters@telenet.be">Thomas Wouters</mail> ></author> > ><abstract> >Dit document helpt de gebruiker MySQL opzetten en gebruiken. ></abstract> > ><!-- The content of this document is licensed under the CC-BY-SA license --> ><!-- See http://creativecommons.org/licenses/by-sa/2.5 --> ><license/> > ><version>1.5</version> ><date>2006-08-08</date> > ><chapter> ><title>Beginnen Met MySQL</title> ><section> ><title>Achtergrond</title> ><body> > ><p> >MySQL is een populaire database server die gebruik wordt in verschillende >toepassingen. SQL staat voor (S)tructured (Q)uery (L)anguage, wat MySQL gebruikt >om te communiceren met andere programma's. Bovendien heeft MySQL aangepaste SQL >functies om extra functionaliteit aan te bieden. In dit document behandelen we >hoe je MySQL moet installeren, een databank en tabellen instellen en nieuwe >gebruikers aanmaken. Laten we beginnen bij het begin: MySQL installeren. ></p> > ></body> ></section> ><section> ><title>MySQL Installatie</title> ><body> > ><p> >Zorg er ten eerste voor dat MySQL geïnstalleerd is op je systeem. Zorg ervoor >dat de je juiste USE flags instelt indien je extra functionaliteit voor MySQL >wil, want deze zorgen voor een verfijnde installatie. ></p> > ><pre caption="MySQL Installeren"> ><comment>(Bekijk de mogelijke USE flags)</comment> ># <i>emerge --pretend --verbose mysql</i> ><comment>(Installeer MySQL)</comment> ># <i>emerge mysql</i> ></pre> > ><p> >Bij de voltooiing van de installatie zal je volgend bericht zien: ></p> > ><pre caption="MySQL einfo message"> >You might want to run: >"emerge --config =dev-db/mysql-[version]" >if this is a new install. ></pre> > ><p> >Omdat dit een nieuwe installatie is voeren we dit commando uit. U moet ><c>ENTER</c> drukken indien gevraagd tijdens de configuratie van de MySQL >database. De configuratie installeert de basis MySQL databank, die bevat >administratieve informatie zoals databanken, tabellen, gebruikers, rechten en >meer. De configuratie raadt je aan om het root paswoord zo snel mogelijk te >wijzigen. Dit zullen we zeker doen, anders zou er toevallig iemand dit merken en >onze MySQL server hacken. ></p> > ><pre caption="MySQL configuratie"> ><comment>(Vervang [version] met de versie die bij jou is >geïnstalleerd.)</comment> ># <i>emerge --config =dev-db/mysql-[version]</i> > * MySQL DATADIR is /var/lib/mysql > * Press ENTER to create the mysql database and set proper > * permissions on it, or Control-C to abort now... > > Preparing db table > Preparing host table > Preparing user table > Preparing func table > Preparing tables_priv table > Preparing columns_priv table > Installing all prepared tables > > To start mysqld at boot time you have to copy support-files/mysql.server > to the right place for your system > > PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! > To do so, issue the following commands to start the server > and change the applicable passwords: ><comment>(Let op de volgende 3 lijnen)</comment> > /etc/init.d/mysql start > /usr/bin/mysqladmin -u root -h pegasos password 'new-password' > /usr/bin/mysqladmin -u root password 'new-password' > Depending on your configuration, a -p option may be needed > in the last command. See the manual for more details. > ><comment>(Een stukje informatie is hier weggelaten om de consistentie van dit >document te behouden.)</comment> > > * For security reasons you should set your MySQL root > * password as soon as possible. ></pre> > ><impo> >Sinds mysql-4.0.24-r2 worden paswoorden tijdens de configuratie fase ingevoerd >wegens veiligheidsredenen. ></impo> > ><p> >Het configuratie script heeft de commando's die we nodig hebben om het paswoord >in te stellen reeds afgedrukt, zodat we deze kunnen uitvoeren. ></p> > ><pre caption="Je MySQL root paswoord instellen"> ># <i>/etc/init.d/mysql start</i> > * Re-caching dependency info (mtimes differ)... > * Starting mysqld (/etc/mysql/my.cnf) ... [ ok ] ><comment>(Vervang new-password met het gewenste paswoord)</comment> ># <i>/usr/bin/mysqladmin -u root -h localhost password 'new-password'</i> ></pre> > ><p> >Je kan nu testen of het root paswoord goed is ingesteld door te proberen >inloggen: ></p> > ><pre caption="Inloggen op de MySQL server met mysql"> >$ <i>mysql -u root -h localhost -p</i> >Enter password: >Welcome to the MySQL monitor. Commands end with ; or \g. >Your MySQL connection id is 4 to server version: 4.0.25 > >Type 'help;' or '\h' for help. Type '\c' to clear the buffer. > >mysql> ></pre> > ><p> >De <c>-u</c> optie definieert de gebruiker waarmee we zullen inloggen. De ><c>-h</c> optie definieert de host, dit zal meestal <c>localhost</c> zijn, >tenzij je een server op afstand instelt. Tenslotte zal <c>-p</c> de mysql client >vertellen dat je een paswoord zult invoeren om bij de database te komen. Let op >de <c>mysql></c> prompt. Dit is waar alle commando's ingevoerd zullen worden. >Nu we in de mysql prompt zijn als root gebruiker, kunnen we onze eigen database >beginnen opstellen. ></p> > ></body> ></section> ></chapter> > ><chapter> ><title>De Database Opstellen</title> ><section> ><title>Een Database Aanmaken</title> ><body> > ><p> >We zijn ingelogd en een mysql prompt is getoond. Laten we eerst kijken naar de >databanken die we al hebben. Om dit te doen, gebruiken we het <c>SHOW >DATABASES</c> commando. ></p> > ><pre caption="De MySQL databanken tonen"> >mysql> <i>SHOW DATABASES;</i> >+----------+ >| Database | >+----------+ >| mysql | >| test | >+----------+ >2 rows in set (0.09 sec) ></pre> > ><impo> >Onthoud dat MySQL commando's moeten eindigen met een puntkomma -- <c>;</c> ></impo> > ><p> >Ondanks het feit dat er al een test databank aangemaakt is zullen we er zelf een >maken. Databanken worden aangemaakt met het commando <c>CREATE DATABASE</c>. We >zullen er een maken, genaamd âgentooâ. ></p> > ><pre caption="De gentoo databank maken"> >mysql> <i>CREATE DATABASE gentoo;</i> >Query OK, 1 row affected (0.08 sec) ></pre> > ><p> >Het antwoord zegt ons dat het commando zonder fouten is uitgevoerd. In dit geval >is er 1 rij gewijzigd. Dit is een referentie naar de basis mysql databank die >een lijst van alle databanken bijhoudt. Je moet je niet teveel zorgen maken om >de achterliggende werking. Het laatste nummer is hoe snel de query uitgevoerd >werd. We kunnen bevestigen dat de databank aangemaakt is door het <c>SHOW >DATABASES</c> commando nog eens uit te voeren. ></p> > ><pre caption="Bevestigen dat de databank is aangemaakt"> >mysql> <i>SHOW DATABASES;</i> >+----------+ >| Database | >+----------+ >| gentoo | >| mysql | >| test | >+----------+ >3 rows in set (0.00 sec) ></pre> > ><p> >Inderdaad, onze databank werd aangemaakt. Om nieuwe tabellen te kunnen aanmaken >voor onze nieuwe gentoo databank, moeten we deze aanduiden als onze huidige >databank. Dit kunnen we met het <c>USE</c> commando. Het <c>USE</c> commando >neemt de naam van de databank die je wilt gebruiken. Een andere optie is om de >databank via de command line mee te geven na de <c>-D</c> optie. Laten we verder >gaan en naar de gentoo databank overschakelen. ></p> > ><pre caption="Naar onze databank overschakelen"> >mysql> <i>USE gentoo;</i> >Database changed ></pre> > ><p> >En de huidige database is nu onze vooraf gemaakte gentoo databank. Nu we deze >gebruiken, kunnen we enkele tabellen aanmaken en er informatie in steken. ></p> > ></body> ></section> ></chapter> > ><chapter> ><title>Met tabellen werken in MySQL</title> ><section> ><title>Een tabel aanmaken</title> ><body> > ><p> >In de structuur van MySQL zijn er databanken, tabellen, rijen en velden. >Databanken houden tabellen samen, tabellen houden rijen samen, rijen houden >velden (die de eigenlijke informatie bevatten) samen. Deze structuur laat >gebruikers toe te kiezen hoe ze hun informatie willen bereiken. Tot nu toe >hebben we databanken behandeld, laten we nu met tabellen werken. Ten eerste, >tabellen kunnen getoond worden op een gelijkaardige wijze als de databanken door >middel van het <c>SHOW TABLES</c> commando. Momenteel zijn er geen tabellen in >onze gentoo databank, want het commando geeft ons het volgende: ></p> > ><pre caption="Lege gentoo databank"> >mysql> <i>SHOW TABLES;</i> >Empty set (0.00 sec) ></pre> > ><p> >Dit wil zeggen dat we tabellen moeten aanmaken. Om dit te doen gebruiken we het ><c>CREATE TABLE</c> commando. Nochtans is dit commando heel verschillend van het ><c>CREATE DATABASE</c> commando. Dit commando Maar dit commando verwacht een >lijst argumenten. De vorm is als volgt: ></p> > ><pre caption="CREATE TABLE Syntax"> >CREATE TABLE [tabel_naam] ([veld_naam] [veld_data_type]([grootte])); ></pre> > ><p> ><b>tabel_naam</b> is de naam van de tabel die we willen aanmaken. Laten we in >dit geval een tabel <c>developers</c> maken. Deze tabel zal de naam (name), >e-mail (email) en functie (job) van de developer bevatten. We hebben hier 3 >noodzakelijke namen, namelijk name, email en job. Het <b>veld_data_type</b> >bepaalt welk type informatie zal worden opgeslagen. De verschillende formaten >kan je bekijken op de <uri >link="http://dev.mysql.com/doc/mysql/en/column-types.html">MySQL Column Types >Page</uri>. In ons geval zullen we het <c>VARCHAR</c> data type gebruiken voor >alle velden. <c>VARCHAR</c> is een van de eenvoudigste data types als we willen >werken met strings. <c>grootte</c> bepaalt hoeveel data een enkel veld zal >opslaan. In dit geval zullen we 128 gebruiken. Dit wil zeggen dat het veld ><c>VARCHAR</c> data kan bevatten van 128 bytes. Je kan dit vergelijken met 128 >karakters, maar de bovenstaande site kan je hiervoor een meer technische uitleg >over geven. Nu we weten hoe we de tabel moeten maken, kunnen we dit ook doen. ></p> > ><pre caption="Onze tabel maken"> >mysql> <i>CREATE TABLE developers ( name VARCHAR(128), email VARCHAR(128), >job VARCHAR(128));</i> >Query OK, 0 rows affected (0.11 sec) ></pre> > ><p> >Het lijkt er op dat onze tabel goed is gemaakt. Laten we even controleren met >het <c>SHOW TABLES</c> commando: ></p> > ><pre caption="Onze tabel verifiëren"> >mysql> <i>SHOW TABLES;</i> >+------------------+ >| Tables_in_gentoo | >+------------------+ >| developers | >+------------------+ >1 row in set (0.00 sec) ></pre> > ><p> >Yep, daar is onze tabel. Nochtans lijkt het geen informatie te bevatten over het >type van velden die we ingesteld hebben. Hiervoor moeten we het <c>DESCRIBE</c> >commando gebruiken (of korter, <c>DESC</c>) dat de naam van de tabel als >argument neemt. Laten we even kijken wat dat geeft voor onze developers tabel. ></p> > ><pre caption="Onze developers tabel beschrijven"> >mysql> <i>DESCRIBE developers;</i> >+-------+--------------+------+-----+---------+-------+ >| Field | Type | Null | Key | Default | Extra | >+-------+--------------+------+-----+---------+-------+ >| name | varchar(128) | YES | | NULL | | >| email | varchar(128) | YES | | NULL | | >| job | varchar(128) | YES | | NULL | | >+-------+--------------+------+-----+---------+-------+ >3 rows in set (0.00 sec) ></pre> > ><p> >Dit toont de verschillende velden en hun types. Het toont ook een beetje extra >attributen, maar die zullen we in deze howto niet bespreken. Ga gerust eens >kijken naar de <uri link="http://dev.mysql.com/doc/mysql/en/">MySQL Reference >Manual</uri> voor meer informatie. Nu we een tabel hebben om mee te werken, >laten we hem invullen. ></p> > ></body> ></section> ><section> ><title>De MySQL databank invullen</title> ><body> > ><p> >We voegen data toe aan een tabel door het <c>INSERT</c> commando. Net als ><c>CREATE TABLE</c> heeft dit commando een specifiek formaat: ></p> > ><pre caption="INSERT Syntax"> >INSERT INTO tabel (veld1, veld2, ...) VALUES ('waarde1', 'waarde2', ...); ></pre> > ><p> >Dit commando wordt gebruik om een rij (record) in een tabel te voegen. tabel is >de naam van de tabel waarin we de data willen opslaan. De naam van de tabel kan >gevolgd worden door een lijst van velden (columns) waar de data in moet en een ><c>VALUES()</c> bevat de data die je in de tabel wil invoeren. Je kan de lijst >met velden weg laten indien je een bepaalde waarde in elk veld zet en indien je >deze waarden in dezelfde volgorde plaatst als de volgorde waarin de velden zijn >gedefinieerd. In dit geval wille we data in de developers tabel toevoegen. Laten >we enkele voorbeeld rijen (records) invoeren: ></p> > ><pre caption="Informatie in onze developers tabel voeren"> >mysql> <i>INSERT INTO developers VALUES('Joe Smith', 'joesmith@gentoo.org', >'toolchain');</i> >Query OK, 1 row affected (0.06 sec) ><comment>(Indien je de volgorde van de velden in de tabel niet weet, of een >onvolledige rij wilt invoeren)</comment> >mysql> <i>INSERT INTO developers (job, name) VALUES('outsourced', 'Jane >Doe');</i> >Query OK, 1 row affected (0.01 sec) ></pre> > ><p> >Volgens het resultaat lijkt het dat de rijen ingevoerd waren. Wat als we meer >data willen invoeren dan slechts een rij? Dit is waar het <c>LOAD DATA</c> >commando te pas komt. Laten we dit eens proberen door een bestand in onze home >dir te maken met de rijen. We noemen dit bestand <path>records.txt</path>. >Hier is een voorbeeld: ></p> > ><pre caption="~/records.txt"> >John Doe johndoe@gentoo.org portage >Chris White chriswhite@gentoo.org documentation >Sam Smith samsmith@gentoo.org amd64 ></pre> > ><impo> >Wees zeker dat je de data kent. Het is zeer onveilig om <c>LOAD DATA</c> te >gebruiken als je de inhoud van een bestand niet kent! ></impo> > ><p> >Het commando <c>LOAD DATA</c> heeft een min of meer verlengde vorm, maar we >gebruiken hier de eenvoudigste vorm. ></p> > ><pre caption="LOAD DATA Syntax"> >LOAD DATA LOCAL INFILE '/path/naar/bestand' INTO TABLE tabel; ></pre> > ><p> ><path>/path/naar/bestand</path> is de map en bestandsnaam dat gebruikt zal >worden. In dit geval is dit <path>~/records.txt</path> en de tabel is >developers. ></p> > ><pre caption="Onze data laden"> >mysql> <i>LOAD DATA LOCAL INFILE '~/records.txt' INTO TABLE developers;</i> >Query OK, 3 rows affected (0.00 sec) >Records: 3 Deleted: 0 Skipped: 0 Warnings: 0 ></pre> > ><impo> >Indien er iets raar gebeurt, controleer dan even of de velden gescheiden zijn >door tabs. Als je informatie van een andere bron in je infile plakt, kunnen de >tabs geconverteerd worden naar spaties. ></impo> > ><p> >Dat ging goed. Nochtans voegt dit enkel velden toe, en geeft je totaal geen >controle over MySQL. Veel web applicaties gebruiken SQL scripts om MySQL snel en >eenvoudig in te stellen. Indien je een SQL script wil gebruiken, moet je mysql >in batch mode uitvoeren of door het bestand te âsourcenâ. Hier is een >voorbeeld hoe je mysql in batch mode uitvoert: ></p> > ><pre caption="MySQL in batch mode"> >$ <i>mysql -u root -h localhost -p < sqlfile</i> ></pre> > ><p> >Zorg er net als bij <c>LOAD DATA</c> steeds voor dat je weet wat ><path>sqlfile</path> zal doen. , be sure you can tell what <path>sqlfile</path> >does. ><e>Indien je dit niet weet, kan het zijn dat je database niet optimaal kan >functioneren!</e> Een andere mogelijkheid om dit te bereiken is gebruik te >maken van het <c>source</c> commando. Dit commando zal mysql commando's uit een >SQL bestand uitvoeren in de mysql interactieve mode. Zo moet je een SQL bestand >sourcen: ></p> > ><pre caption="Een SQL bestand sourcen"> >mysql> <i>source sqlfile;</i> ></pre> > ><p> >Indien je een webapplicatie ziet die een SQL bestand wil uitvoeren kan je de >twee bovenstaande commando's gebruiken om die taak uit te voeren. We hebben onze >tabel ingesteld, hoe kunnen we nu onze velden controleren? Dit doen we door onze >tabel te doorzoeken met queries. ></p> > ></body> ></section> ><section> ><title>MySQL Tabellen browsen met queries</title> ><body> > ><p> >Queries zijn een van de basisfuncties van een SQL databank. Ze helpen ons om van >de data in onze tabellen iets nuttig te maken. De meeste queries worden gedaan >met het <c>SELECT</c> commando. Het <c>SELECT</c> commando is vrij complex en we >zullen in dit document naar slechts drie vormen kijken. ></p> > ><pre caption="SELECT vormen"> ><comment>(Alle rijen van een tabel selecteren)</comment> >SELECT * FROM tabel; ><comment>(Specifieke rijen van een tabel selecteren)</comment> >SELECT * FROM tabel WHERE veld=waarde; ><comment>(Specifieke velden selecteren)</comment> >SELECT veld1,veld2,veld3 FROM tabel [WHERE veld=waarde]; ></pre> > ><p> >Laten we even snel kijken naar de eerste vorm. Deze is relatief eenvoudig geeft >je een algemeen overzicht van je tabel. We zullen het uitvoeren en eens kijken >welke data we hebben. ></p> > ><pre caption="Inhoud van onze tabel"> >mysql> <i>SELECT * FROM developers;</i> >+-------------+-----------------------+----------------+ >| name | email | job | >+-------------+-----------------------+----------------+ >| Joe Smith | joesmith@gentoo.org | toolchain | >| John Doe | johndoe@gentoo.org | portage | >| Chris White | chriswhite@gentoo.org | documentation | >| Sam Smith | samsmith@gentoo.org | amd64 | >| Jane Doe | NULL | Outsourced job | >+-------------+-----------------------+----------------+ >5 rows in set (0.00 sec) ></pre> > ><p> >We zien zowel de data die we ingevoerd hebben met het <c>INSERT</c> commando als >met het <c>LOAD DATA</c> commando. Stel dat we enkel het record van Chris White >willen zien. Dit kunnen we door de tweede vorm van select. ></p> > ><pre caption="Een specifieke rij selecteren met SELECT"> >mysql> <i>SELECT * FROM developers WHERE name = 'Chris White';</i> >+-------------+-----------------------+---------------+ >| name | email | job | >+-------------+-----------------------+---------------+ >| Chris White | chriswhite@gentoo.org | documentation | >+-------------+-----------------------+---------------+ >1 row in set (0.08 sec) ></pre> > ><p> >Zoals verwacht werd de specifieke rij die we zochten getoond. Wat als we van >deze persoon enkel het e-mail adres en zijn functie willen. Dan kunnen we >volgende vorm van select gebruiken: ></p> > ><pre caption="Een specifieke rij en velden selecteren met SELECT"> >mysql> <i>SELECT email,job FROM developers WHERE name = 'Chris White';</i> >+-----------------------+---------------+ >| email | job | >+-----------------------+---------------+ >| chriswhite@gentoo.org | documentation | >+-----------------------+---------------+ >1 row in set (0.04 sec) ></pre> > ><p> >Deze methode van selectie is veel eenvoudiger om te gebruiken, zeker met grotere >hoeveelheden informatie zoals we later zullen zien. Nu, zijnde de root mysql >gebruiker, hebben we ongelimiteerde toegang om te doen wat we maar willen met de >MySQL databank. In een server omgeving kan een gebruiker met zulke mogelijkheden >een probleem vormen. Om te kunnen controleren wie wat doet in de databank, >zullen we rechten instellen. ></p> > ></body> ></section> ></chapter> > ><chapter> ><title>MySQL Gebruikersrechten</title> ><section> ><title>Gebruikersrechten instellen met GRANT</title> ><body> > ><p> >Gebruikersrechten bepalen wat voor soort toegang bepaalde gebruikers hebben in >databanken, tabellen, ongeveer alles. Momenteel is root gezien zijn rechten de >enige gebruiker die in de gentoo databank kan. Laten we twee ietwat gewone >gebruikers maken die de gentoo database kunnen gebruiken, namelijk gast en >admin. De gast gebruiker zal gelimiteerd worden, alles wat het moet kunnen doen >is de informatie uit de databank halen. Admin zal gelijk worden aan root, maar >enkel voor de gentoo databank (niet de basis mysql databank). Voordat we daarmee >beginnen zullen we even kijken naar een vereenvoudigd formaat van het ><c>GRANT</c> commando. ></p> > ><pre caption="GRANT Syntax"> >GRANT [privileges] ON database.* TO '[user]'@'[host]' IDENTIFIED BY >'[password]'; ></pre> > ><note> >Er wordt aangenomen dat <c>GRANT</c> de manier if om een gebruiker aan te maken. >Nogthans bevatten latere versies van MySQL een <c>CREATE_USER</c> functie. ><c>GRANT</c> blijft wel een voorkeur. ></note> > ><p> >Ten eerste hebben we de rechten die we willen geven. Met wat we tot hier al >geleerd hebben kan je deze rechten zetten: ></p> > ><ul> > <li><c>ALL</c> - Geeft volledige controle over de databank</li> > <li><c>CREATE</c> - Staat gebruiker toe om tabellen te maken</li> > <li><c>SELECT</c> - Staat gebruiker toe om queries uit te voeren</li> > <li><c>INSERT</c> - Staat gebruiker toe om data in een tabel te steken</li> > <li><c>SHOW DATABASES</c> - Staat gebruiker toe een lijst van databanken te >zien</li> > <li><c>USAGE</c> - Gebruiker heef geen rechten</li> > <li><c>GRANT OPTION</c> - Staat gebruiker toe om rechten te geven</li> ></ul> > ><note> >Als je MySQL gebruikt om data te communiceren met een web applicatie zijn ><c>CREATE</c>, <c>INSERT</c> (Hier besproken), <c>DELETE</c> en <c>UPDATE</c> >(for further infomation look up the ><uri link="http://dev.mysql.com/doc/mysql/en/grant.html"> MySQL >Reference Manual - GRANT en REVOKE Syntax</uri> sectie) waarschijnlijk de enige >permissies die je zal nodig hebben. Veel mensen maken de fout om alle permissies >te geven als het niet nodig is. Kijk even bij de applicatie developers of deze >permissies problemen zullen geven bij het algemeen gebruik. ></note> > ><p> >Voor onze admin gebruiker zal <c>ALL</c> goed zijn. Voor de gast gebruiker is ><c>SELECT</c> voldoende voor enkel te lezen. database is de databank waarvoor we >de gebruiker deze rechten willen geven. In dit voorbeeld is gentoo de database. >De .* wil zeggen dat deze rechten op alle tabellen toegepast worden. Indien je >dit wil kan je per tabel permissies geven. user is de naam van de gebruiker en >host is de hostname waarvan de gebruiker verbinding zal maken. In de meeste >gevallen is dit localhost. Als laatste wordt het paswoord meegegeven. Met deze >informatie kunnen we onze gebruikers aanmaken. ></p> > ><pre caption="admin en gast gebruikers aanmaken"> ><comment>(admin)</comment> >mysql> <i>GRANT ALL ON gentoo.* TO 'admin'@'localhost' IDENTIFIED BY >'password';</i> ><comment>(gast)</comment> >mysql> <i>GRANT SELECT ON gentoo.* TO 'gast'@'localhost' IDENTIFIED BY >'password';</i> ></pre> > ><p> >Nu we de gebruikers hebben ingesteld kunnen we ze uittesten. Sluit de mysql >prompt door <c>quit</c> te typen op de commando prompt: ></p> > ><pre caption="MySQL prompt sluiten"> >mysql> <i>quit</i> ></pre> > ><p> >Nu zijn we terug in de console. Nu wa onze gebruikers hebben ingesteld kunnen we >eens kijken wat ze kunnen doen. ></p> > ></body> ></section> ><section> ><title>Gebruikersrechten testen</title> ><body> > ><p> >We zullen proberen om in te loggen als gast gebruiker. Momenteel heeft de gast >gebruiker enkel <c>SELECT</c> rechten. Dit komt er in het algemeen op neer dat >de gebruiker kan zoeken en niks meer. Meld aan met de gast gebruiker. ></p> > ><pre caption="Aanmelden met de gast gebruiker"> >$ <i>mysql -u gast -h localhost -p</i> >Enter password: >Welcome to the MySQL monitor. Commands end with ; or \g. >Your MySQL connection id is 6 to server version: 4.0.25 > >Type 'help;' or '\h' for help. Type '\c' to clear the buffer. > >mysql> ></pre> > ><p> >Nu kunnen we de gebruikersrechten testen. Laten we naar de gentoo databank >overschakelen. ></p> > ><pre caption="Naar de gentoo databank overschakelen"> >mysql> <i>USE gentoo;</i> >Reading table information for completion of table and column names >You can turn off this feature to get a quicker startup with -A > >Database changed ></pre> > ><p> >Laten we nu eens iets proberen dat we niet zouden mogen doen. We zullen proberen >om een nieuwe tabel aan te maken. ></p> > ><pre caption="Een nieuwe tabel proberen aanmaken met de gast gebruiker"> >mysql> <i>CREATE TABLE test (test VARCHAR(20), foobar VARCHAR(2));</i> >ERROR 1044: Access denied for user: 'gast@localhost' to database 'gentoo' ></pre> > ><p> >Zoals je kan zien mislukt deze functie aangezien onze gebruiker niet de >aangewezen rechten heeft. Het enige dat we toegelaten hebben is <c>SELECT</c>. >Laten we dit eens proberen: ></p> > ><pre caption="Het SELECT commando uitproberen"> >mysql> <i>SELECT * FROM developers;</i> >+-------------+-----------------------+----------------+ >| name | email | job | >+-------------+-----------------------+----------------+ >| Joe Smith | joesmith@gentoo.org | toolchain | >| John Doe | johndoe@gentoo.org | portage | >| Chris White | chriswhite@gentoo.org | documentation | >| Sam Smith | samsmith@gentoo.org | amd64 | >| Jane Doe | NULL | Outsourced job | >+-------------+-----------------------+----------------+ >5 rows in set (0.00 sec) ></pre> > ><p> >Het commando is geslaagd en we hebben een glimps opgevangen van wat >gebruikersrechten kunnen doen. We hebben ook een admin gebruiker aangemaakt. >Deze was gemaakt om aan te tonen dat zelfs gebruikers met alle rechten >gelimiteerd zijn. Sluit de MySQL prompt en meld je aan als admin. ></p> > ><pre caption="Aanmelden als admin"> >mysql> <i>quit</i> >Bye >$ <i>mysql -u admin -h localhost -p</i> >Enter password: >Welcome to the MySQL monitor. Commands end with ; or \g. >Your MySQL connection id is 7 to server version: 4.0.25 > >Type 'help;' or '\h' for help. Type '\c' to clear the buffer. > >mysql> ></pre> > ><p> >Om te beginnen zullen we een nieuwe databank aanmaken met onze admin gebruiker. >Deze admin gebruiker zal gelijkaardige toegang hebben als de root MySQL >gebruiker, en kan eender welke wijziging aanbrengen aan de gekozen gentoo >databank. Dit zal de rechten van de gebruiker op de MySQL databank tonen. >Onthoud dat we eerder hebben gekozen om de rechten op een specifieke databank >toe te passen. ></p> > ><pre caption="Een nieuwe databank proberen aanmaken"> >mysql> <i>CREATE DATABASE gentoo2;</i> >ERROR 1044: Access denied for user: 'admin@localhost' to database 'gentoo2' ></pre> > ><p> >Inderdaad, de admin gebruiker kan geen nieuwe databanken aanmaken op de basis >MySQL databank ondanks zijn rechten op de gentoo databank. Maar het is nog >steeds mogelijk om de gentoo databank te wijzigen zoals eengetoond door dit >voorbeeld: ></p> > ><pre caption="Admin permissies in de gentoo databank"> >mysql> <i>USE gentoo;</i> >Reading table information for completion of table and column names >You can turn off this feature to get a quicker startup with -A > >Database changed >mysql> <i>INSERT INTO developers VALUES('Bob Simmons', >'bobsimmons@gentoo.org', 'python');</i> >Query OK, 1 row affected (0.08 sec) ></pre> > ><p> >De admin gebruiker kan de databank gebruiken naar believe. Soms moeten we van >gebruikers af geraken. Dit kan alles zijn, van een probleemgebruiker tot een >gepensioneerde gebruiker. Late we even kijken hoe we gebruikers kunnen >uitschakelen met het <c>REVOKE</c> commando. ></p> > ></body> ></section> ><section> ><title>Gebruikerstoegang verwijderen met het REVOKE commando</title> ><body> > ><p> >Het <c>REVOKE</c> commando laat ons de toegang van bepaalde gebruikers te >weigeren. We kunnen zowel volledige toegang weigeren als specifieke toegang. In >feite is de syntax zeer gelijkaardig aan die van <c>GRANT</c> ></p> > ><pre caption="REVOKE Syntax"> >REVOKE [privileges] ON database.* FROM '[user]'@'[host]'; ></pre> > ><p> >Deze opties zijn uitgelegd in de <c>GRANT</c> commando sectie. In deze sectie >gaan we een gebruiker alle toegang weigeren. Laten we zeggen dat we ontdekt >hebben dat de gast gebruiker veiligheidsproblemen veroorzaakt. We beslissen om >alle rechten weg te nemen. We melden aan als root en doen het nodige. ></p> > ><pre caption="Gebruikersrechten verwijderen"> >mysql> <i>REVOKE ALL ON gentoo.* FROM 'gast'@'localhost';</i> >Query OK, 0 rows affected (0.00 sec) ></pre> > ><note> >In dit geval zijn de rechten eenvoudig, dus per databank verwijderen is geen >probleem. Maar in andere gevallen moet je waarschijnlijk *.* gebruiken in plaats >van gentoo.* om de gebruikersrechten op alle databanken te verwijderen. ></note> > ><p> >Laten we nu eens proberen om met de gast gebruiker aan te melden. ></p> > ><pre caption="Proberen aanmelden met de gast gebruiker"> >$ <i>mysql -u gast -h localhost -p</i> >Enter password: >Welcome to the MySQL monitor. Commands end with ; or \g. >Your MySQL connection id is 9 to server version: 4.0.25 > >Type 'help;' or '\h' for help. Type '\c' to clear the buffer. > >mysql> ></pre> > ><p> >Hoewel we kunnen aanmelden is onze toegang tot gentoo niet toegelaten. ></p> > ><pre caption="Toegang geweigerd"> >mysql> <i>USE gentoo;</i> >ERROR 1044: Access denied for user: 'gast@localhost' to database 'gentoo' ></pre> > ><p> >En onze problematische gebruiker kan niet langer aan de gentoo databank. Merk >wel op dat de gebruiker nog steeds kan aanmelden. Dit is mogelijk omdat hij nog >in de basis MySQL databank zit. Laten we eens kijken hoe we deze gebruiker >volledig uit de MySQL databank kunnen verwijderen met <c>DELETE</c>. ></p> > ></body> ></section> ><section> ><title>Gebruikers verwijderen met DELETE</title> ><body> > ><p> >De MySQL user tabel is een lijst van alle gebruikers en hun informatie. Zorg >ervoor dat je aangemeld bent als root en schakel over naar de MySQL databank. ></p> > ><pre caption="De mysql databank gebruiken"> >mysql> <i>USE mysql;</i> >Reading table information for completion of table and column names >You can turn off this feature to get a quicker startup with -A > >Database changed >mysql> ></pre> > ><p> >Eens kijken welke tabellen de mysql databank heeft: ></p> > ><pre caption="mysql databank tabellen"> >mysql> <i>SHOW TABLES;</i> >+-----------------+ >| Tables_in_mysql | >+-----------------+ >| columns_priv | >| db | >| func | >| host | >| tables_priv | >| user | >+-----------------+ >6 rows in set (0.00 sec) ></pre> > ><p> >De user tabel is de tabel die we zoeken, maar de user tabel bevat 30 >verschillende velden waardoor het moeilijk wordt om te lezen. Om het allemaal >wat eenvoudiger te maken gebruiken we de derde vorm van het <c>SELECT</c> >commando. De velden die we zoeken zijn Host en User. ></p> > ><pre caption="Onze gast gebruiker zoeken in de user tabel"> >mysql> <i>SELECT Host,User FROM user WHERE User = 'gast';</i> >+-----------+-------+ >| Host | User | >+-----------+-------+ >| localhost | gast | >+-----------+-------+ >1 row in set (0.00 sec) ></pre> > ><p> >Nu we deze informatie hebben kunnen we van de gast gebruiker af geraken. Dit kan >met het <c>DELETE</c> commando. De syntax is als volgt: ></p> > ><pre caption="DELETE Syntax"> >DELETE FROM table WHERE field='value'; ></pre> > ><p> >Het is je misschien opgevallen dat <c>DELETE</c> veel gelijkt op het ><c>SELECT</c> commando qua syntax. In dit geval is field gebruiker en value is >gast. Dit zal het de rij in de user tabel verwijderen waar user is gast en dus >onze gast gebruiker verwijderen. Laten we dit doen: ></p> > ><pre caption="De gast gebruiker verwijderen"> >mysql> <i>DELETE FROM user WHERE User='gast';</i> >Query OK, 1 row affected (0.07 sec) ><comment>(FLUSH PRIVILEGES is nodig om de gebruikersrechten te >updaten)</comment> >mysql> <i>FLUSH PRIVILEGES;</i> >Query OK, 0 rows affected (0.00 sec) ></pre> > ><p> >Het lijkt gelukt te zijn. Laten we eens afmelden en proberen aanmelden als gast >gebruiker. ></p> > ><pre caption="Proberen aanmelden als gast gebruiker"> >mysql> <i>quit</i> >Bye >$ <i>mysql -u gast -h localhost -p</i> >Enter password: >ERROR 1045: Access denied for user: 'gast@localhost' (Using password: YES) ></pre> > ><p> >Onze gebruiker is met succes verwijderd! ></p> > ></body> ></section> ><section> ><title>Conclusie</title> ><body> > ><p> >Hoewel deze gids zich toespitst op het instellen van MySQL via de command line >zijn er enkele grafische alternatieven: ></p> > ><ul> > <li> > <uri link="http://www.phpmyadmin.net/home_page/">phpMyAdmin</uri> - Populair >administratie tool gebaseerd op PHP. > </li> > <li> > <uri > link="http://sourceforge.net/projects/mysqlnavigator/">mysqlnavigator</uri> > - QT frontend voor MySQL. > </li> > <li> > <uri link="http://gmyclient.sourceforge.net/">gmyclient</uri> - Een op GNOME >gebaseerde MySQL client. > </li> > <li><uri link="http://www.knoda.org/">knoda</uri> - Een KDE MySQL client.</li> ></ul> > ><p> >Hierbij eindigt de MySQL introductie. Ik hoop dat dit je de basis van MySQL en >het opstellen van een databank beter helpt te begrijpen. E-mail ><mail>chriswhite@gentoo.org</mail> voor commentaar (engels). ></p> > ></body> ></section> ></chapter> ></guide>
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 155519
: 102226