/ HomePage / Computer / Software / Linux-Konfiguration / MySQL
MySQL konfigurieren
Als erstes muss MySQL installiert werden, was sich per
sehr schnell erledigen läßt. Und hier nicht weiter bedacht werden soll.
Die erste Initialisierung ist auch recht einfach getan.
emerge --config >=mysql-<versionsnummer>
Elsni 17.02.2009 22:07 Uhr:Beispiel? Funzte bei nicht nicht
Einloggen als root
# mysql -u root -p
> <root passwort>
- Alle Zeilen die mit '#' starten sollen sagen, hier wird von der Shell gestartet.
- Alle Zeilen die mit 'mysql>' starten sollen sagen, hier wird aus der mysql Shell gestartet.
User anlegen
mysql> CREATE USER 'bob'@'localhost';
oder
mysql> CREATE USER 'bob'@'%' IDENTIFIED BY 'passwort';
Das geht so nicht?
- ERROR 1146 (42S02): Table 'mysql.procs_priv' doesn't exist
# mysql_fix_privilege_tables (--password=<root password>)
- ERROR 1396 (HY000): Operation CREATE USER failed for 'bob'@'%'
Sieht so aus, als ob bob schon existiert?
mysql> select user,host from user;
Danach nochmal probieren.
User ein Passwort verpassen
mysql> SET PASSWORD FOR 'bob'@'localhost' = PASSWORD('geheim');
mysql> SET PASSWORD FOR 'bob'@'%' = PASSWORD('geheim');
Einloggen als user
# mysql -u bob -p
>geheim
Datenbank anlegen
mysql> create database einedb;
User mit Rechten ausstatten
mysql> quit
# mysql -u root -p
mysql> GRANT ALL PRIVILEGES ON einedb.* TO 'bob'@'localhost' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON einedb.* TO 'bob'@'%' WITH GRANT OPTION;
flush privileges
Datenbank exportieren
# mysqldump -p --databases <DBName> >file.sql
# mysqldump --complete-insert --skip-extended-insert --user=<user> --password=<geheim> --result-file=file.sql --databases <DBName>
- complete-insert: im INSERT werden die Tabellenspaltennamen mit angegeben.
- skip-extended-insert: für jedes INSERT wird eine eigene Zeile verwendet.
- result-file=file: Statt '>' für Standardausgabe, gerade unter Windows werden so die Lineendings nicht geschrottet.
Datenbank importieren
# mysql <file.sql
Datenbank von aussen erreichbar machen
In der /etc/mysql/my.cnf den Eintrag bind-address=127.0.0.1 maskieren. (# davor) Aber haut mich jetzt nicht in die Pfanne, das geschied auf eigenes Risiko.
Tips
# mysql -u user -p
verlangt immer nach einen Kennwort, wer es leid ist es jedes mal zu tippen, kann es auch in der ~/.mc.cnf ablegen
[client]
password="geheimes Passwort"
Die Datei per chmod 600 nur für den User selbst lesbar machen und schon kann man Kennwort geschützte Datenbanken mit mysql bearbeiten.
Vorteile:
- Nie wieder das Kennwort eintippen
- Das Kennwort geht nicht verloren, da es ja in einer Datei abgelegt ist an die nur der Benutzer selbst ran kommt
Nachteile:
- Jeder der root werden kann, kennt auch das Kennwort oder kann es beim User auslesen.