Main /

Mysql Konfigurieren

Mysql Konfigurieren

/ HomePage / Computer / Software / Linux-Konfiguration / MySQL

MySQL konfigurieren

Als erstes muss MySQL installiert werden, was sich per

emerge dev-db/mysql

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');

seit mysql 5.7

 mysql> UPDATE user SET password=password('geheim') WHERE user='bob';

sollte der user.authentication_string 'NULL' sein, ist ein einloggen auf der Console nicht möglich. Es gibt statt dessen einen Error: 1045 und ein Access Denied.

 mysql> UPDATE user SET authentication_string='' WHERE user='bob';

Einloggen als user

 # mysql -u bob -p
 >geheim

 # mysql -u bob -pgeheim

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;

Testen

Da heutzutage nichts mehr ohne richtige Tests geht, hier ein kleines Beispiel, wie eine Tabelle angelegt wird, diese mit Daten befüllt wird, ausgegeben wird und die Tabelle wieder entfernt wird.

 mysql -u bob -p einedb
 >geheim

Eine Beispiel Tabelle tester anlegen:

 create table tester(id int);

Die Tabelle tester mit Werten befüllen

 insert into tester (id) values (128);
 insert into tester (id) values (256);

Den Inhalt der Tabelle tester anzeigen

 select * from tester;

Sollte jetzt den Inhalt der Tabelle tester ausgeben.

 id
 ---
 128
 256

Um die Tabelle tester wieder zu entfernen

 drop table tester;

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.
Frische Änderungen | Menü editieren
zuletzt geändert am 19.08.2016 09:51 Uhr von Lars
Edit Page | Page History