[Hjälp] Stacken

Diverse om MySQL

Hur man administrerar stackens databasserver.

En del saker kan göras genom det webbaserade administrationsverktyget phpMyAdmin.

Adminlösen

I samtliga exempel nedan kan man se -u root -p som del av kommandona. root är administratörskontot för vår databas, och förutom namnet har det inget alls att göra med Unix-root. -p ser till att det promptas efter lösenord. Om du inte vet om det lösenordet är det mycket möjligt att du heller inte borde veta det, men du kan ju alltid prova att fråga någon snällt så kanske denne släpper ifrån sig lösenordet till dig. Not till administratörerna: var restriktiva med att ge ut det här lösenordet!

Om du är ute efter en egen databas är det naturligtvis mycket bättre att helt enkelt be administratörerna att bygga den åt dig. Du kan t.o.m. hjälpa dem genom att berätta om den här sidan, så blir det hela enklare för dem också!

Nya databaser

  1. Se till att göra följande steg innan du börjar:

    • Inloggad på sql.stacken.kth.se (just nu är det renskav)
    • module add mysql
  2. Gör nu följande kommando:

    $mysqladmin -u root -p create {databasnamn}

    Databasens namn får enbart innehålla bokstäver, siffror och '_'.

  3. En variant på samma kommando är (den kan vara nyttig om man ska göra andra saker med mysql i samma veva):

    $mysql -u root -p mysql
    mysql> CREATE DATABASE {databasnamn};
    
  4. Så, nu finns det en databas. Dags att skapa användare och koppla dem till databasen.

Nya användare

Att skapa nya användare och koppla dessa till sin databas görs i ett huj. För att göra det krävs också att man är inloggad på sql.stacken.kth.se och har gjort module add mysql.

$ mysql -u root -p
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX
               ON {databasnamn}.* TO {användare}
               IDENTIFIED BY '{lösenord}';

{användare} kan skrivas i två former, antingen bara ett användarnamn, eller some {user}@{host}. En {host} MÅSTE anges. {host} kan innehålla tecknet "%" some wildcard, t.ex. "%.e.kth.se" eller "130.237.234.%".

Om man inte tycker att användare ska kunna skapa index så kan man låta bli privilegien INDEX.

Rekommendationer:

Typexempel (dvs, så här brukar jag göra):

$ mysql -u root -p
 [...]
mysql> CREATE DATABASE test_db;
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX
    ON test_db.* TO "test-db-user"@"localhost"
    IDENTIFIED BY 'räksmörgås';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX
               ON test_db.* TO "test-db-user"@"%.stacken.kth.se"
               IDENTIFIED BY 'räksmörgås';
mysql> GRANT SELECT ON test_db.* TO "test-db-user-v"@"localhost"
               IDENTIFIED BY 'kalleanka';
mysql> GRANT SELECT ON test_db.* TO "test-db-user-v"@"%.stacken.kth.se"
               IDENTIFIED BY 'kalleanka';

Koppla gamla användare

Att koppla redan befintliga användare till en ny databas funkar exakt som att skapa nya användare, med den enda skillnaden att man inte har med IDENTIFIED BY '{lösenord}'.

Backup

Backup av samtliga databaser tas varje natt. Det görs genom att root kör följande kommando på shake:

/pkg/mysql/3.23.28/bin/mysqldump --opt --all-databases -ubup -ppub \
  > /var/mysql/3.23.28/.backup/bup

Resten tas om hand av vårt vanliga backupsystem. bup roteras också, så man hittar den förra backupen som bup.1, den innan som bup.2 osv fram till bup.9.

Restore

Om något går åt pipan med databassystemet återskapar man det senaste genom att utföra följande:

/pkg/mysql/3.23.28/bin/mysql -u root -p < /var/mysql/3.23.28/.backup/bup

Notera att det bygger om allt! Om det bara är en individuell databas man vill återskapa så kan man plocka ut rätt bitar ur bup till en annan fil och använda den filen som input, eller be någon om hjälp.

levitte


Any browser, W3C HTML 4.01, W3C CSS, §.
Webmasters @ Stacken
Revision: 1.8, 2006-07-13 19:47:40