Artikel arkivet's artikelkategori: MySQL
Skriven av exz 2003-10-15 22:37 url: http://www.mysql.org

Grundläggande genomgång av MySQL.

OBS! Artikeln är "Generaly fucked up", jobbar på att ordna upp den. :-).

Detta är en liten guide om hur du använder MySQL. Denna guide är baserad på mina egna kunskaper, och jag har själv enbart lärt mig det jag behövt kunna för att göra mina SQL-jobb. Det kan därför hända att denna lilla guide inte uppfyller dina krav. I sådana fall så föreslår jag att du kollar igenom dokumentationen på MySQL.org för en mer komplett guide.

Börja med att koppla upp dig som root mot din MySQL-server:

# mysql -u root -p

Då kommer du få fram en prompt som ser ut såhär:

mysql>

Där skriver du alla kommandon som ska tolkas av MySQL-servern. Det första du bör göra är att ge rättigheter till en användare, om du inte vill köra alla databaser som root förstås. Detta görs med kommandot grant. Alla kommandon i MySQL-prompten måste avslutas med ett semikolon.

mysql> GRANT all ON foo.bar TO loser@localhost IDENTIFIED BY 'slackware';

Detta kommer att ge användaren loser fulla rättigheter till tablet bar i databasen foo genom att använda lösenordet slackware. Du kan självklart göra så att en viss användare har speciella rättigheter till ett table. Till exempel såhär:

mysql> GRANT SELECT,INSERT,ALTER ON foo.bar TO loser@localhost IDENTIFIED BY 'slackware';

Då har användaren bara tillgång till att köra SELECT, INSERT och ALTER. Det går även att ge en användare rättigheter till hela databser eller alla databaser:

mysql> GRANT all ON foo.* TO loser@localhost IDENTIFIED BY 'slackware';

Om du inte har MySQL-servern på samma server som du skall använda den ifrån så måste du även specificera ett hostname eller en ip-adress som användaren ska få koppla upp sig ifrån:

mysql> GRANT all ON * to loser@10.0.0.1 IDENTIFIED by 'slackware';

När du har gjort klart detta så kan du kolla om allting har gått rätt till genom att skriva:

mysql> SHOW GRANTS for loser@localhost;

Efter att du gjort detta så kan du gå ur och logga in som den användare du gett rättigheter:

# mysql -u loser -p

Nu kan du som användare loser skapa databasen som du gett rättigheter för. Detta görs genom kommandot CREATE.

mysql> CREATE DATABASE foo;

För att visa alla databaser skriver du:

mysql> SHOW DATABASES;

Nu kommer två databser som heter test och mysql att finnas med, dessa är de som skapades när du körde install_db-scriptet under MySQL-installationen. Och dessa måste finnas kvar för att det ska fungera som det ska.
Nu när vi har en databas så måst vi välja att det är just den databasen vi vill arbeta med, det gör vi med USE:

mysql> USE foo;

Nu kan du skriva..

mysql> SHOW TABLES;

..för att se vilka tables du har i denna databasen. Eftersom att den nyss är skapad så bör det inte finnas några tables. Därför är det dags att skapa ett. Detta görs också med kommandot CREATE. Dock med en lite krångligare syntax.

mysql> CREATE TABLE bar (user VARCHAR(30));

Detta kommer att skapa ett table som heter bar med en kolumn i, den kolumnen kan du lägga vad du vill i, men med maxlängd 30 tecken. Det finns många olika typer av kolumner du kan lägga till. Men just i denna guide så kommer vi att använda tre stycken, VARCHAR, INT och BLOB. Nu kan du testa att ditt table existerar genom att skriva:

mysql> DESCRIBE bar;

Då får du fram vilka kolumner som finns i tablet, i just detta finns det bara en kolumn. Men du kan självklart lägga till flera genom att separera namnet och typen med ett kommatecken. Nu ska vi däremot lära oss hur man lägger till flera kolumer i ett existerande table:

mysql> ALTER TABLE bar ADD age INT(2) AFTER user;

Detta kommer att lägga till en ny kolumn i tablet bar som heter age och har plats för två siffror. Den kommer att hamna efter kolumnen user. Efter detta så lägger vi till en BLOB också. Det är en kolumn som inte har någon begränsning på längd. D.v.s. Du kan stoppa in hur långa saker som helst i den.

mysql> ALTER TABLE bar ADD comment BLOB AFTER user;

Nu har vi ett table med tre stycken kolumner i, och det är dags att lägga i lite information i detta table:

mysql> INSERT INTO bar VALUES ('loser','This user knows nothing about anything.','14');

För att veta i vilken ordning alla värden ska stoppas in i tablet kan du först skriva..

mysql> DESCRIBE bar;

..för att se vilka kolumner du har. Nu när det finns information i tablet så ska vi börja ta ut information från det:

mysql> SELECT * FROM bar;

Nu kommer all information fram som finns i tablet bar. Men det finns ganska mycket man kan göra för att specificera sig. Men för att lättare förstå hur man gör detta lägger vi först till ett par värden till:

mysql> INSERT INTO bar VALUES ('exz','Author of this guide.','18');
mysql> INSERT INTO bar VALUES ('someguy','This guy is really old','95');


Sådär, nu har vi tre stycken värden i vårat table, då testar vi att ta ut lite mer specificerad information:

mysql> SELECT user,comment FROM bar WHERE user!='admin' AND age UPDATE bar SET comment='Leet dude' WHERE user='exz';

Detta kommer att uppdatera kommenteren för användaren exz i tablet bar till att bli 'Leet dude'. (Även om inte detta stämmer i verkligheten. :P)

Jaha, då kan vi uppdatera saker också, dags att visa hur man tar bort saker och ting. Vi börjar med att ta bort someguy från tablet:

DELETE FROM bar WHERE user='someguy';

Detta kommer att ta bort alla rader som har someguy som user. Om du vill ta bort allting från ett table kan du enbart använda:

mysql> DELETE FROM bar;

Då får du ett tomt table igen. :-) Men ett tomt table är väl inte till någon nytta? Nej, så då tar vi bort det igen:

mysql> DROP TABLE bar;

Nu har vi istället en tom databas utan tables i, och det är inte heller till någon nytta, så vi tar bort det också.

mysql> DROP DATABASE foo;

Kvar har vi nu en användare som har rättigheter till en databas som inte ens existerar, så då kan vi lika gärna ta bort rättigheterna för den personen också.

mysql> REVOKE all FROM foo.bar FROM loser@localhost;

Detta var en kort och enkel genomgång i hur man kan använda MySQL. Denna artikel är som sagt baserad på mina egna kunskaper, så jag har antagligen missat vissa grundläggande saker. Dessutom så borde jag har gjort ett par fel på några ställen, så om du upptäcker något eller anser att någonting är allmänt snurrigt, så maila mig vänligen på exz@mirkken.org.

Lycka till. :)