MySQL

Aus Doku-Wiki
Zur Navigation springenZur Suche springen

MySQLeinrichten

Secure Installation

  • Befehl für die Einrichtung
mysql_secure_installation

Die wichtigsten MySQL Befehle

Benutzer

Benutzer anzeigen

SELECT user FROM mysql.user;

Benutzer anlegen

CREATE USER 'USERNAME'@'localhost' IDENTIFIED BY 'PASSWORD';

Benutzer rechte (alle Recht + GRANT)

GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'localhost' WITH GRANT OPTION;

Benutzer rechte, Änderungen speichern

FLUSH PRIVILEGES;


Datenbanken

Datenbanken anzeigen

SHOW DATABASES;

Datenbanken anlegen

CREATE DATABASE db_namen;

Datenbanken löschen

DROP DATABASE db_namen; oder
DROP DATABASE IF EXISTS db_namen;

Datenbank auswählen

USE db_namen;

Tabellen

Tabellen einer Datenbank anzeigen

SHOW TABLES FROM db_namen;

PhpMyAdmin Anmeldung

Das Login mittels PhpMyAdmin wird verweigert, weil die Authentifizierung über "Unix Socket based authentification" eingestellt ist. Hier wird die Authentifizierung nur auf der Konsole erlaubt. Die Umstellung erfolgt also auf der Konsle:

mysql -u root
use mysql;
update user set plugin= where User='root';
flush privileges;
exit;

Damit wird das unix_socket-Plugin deaktiviert. Nun sollte das Login über PhpMyAdmin funktionieren.

User mit allen Rechten anlegen

  • getestet im Juli 2022
mysql --user=root mysql
CREATE USER 'USERNAME'@'localhost' IDENTIFIED BY 'PASSWORD';
GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Den roten Text mit Name und Passwort ersetzen

Root-Passwort zurück setzen

Um das root Passort auf einen definierten Wert zurückzusetzen sind folgende Schritte notwendig:

  • Prozess-Ids der MySQL-Prozesse ermitteln und Prozesse beenden
1.)   # ps aux
2.)   PID für “/bin/sh /usr/bin/mysqld_safe” ermitteln   (Zum Beispiel 1867)
3.)   # kill -9 1867
4.)   # ps aux
5.)   PID für “/usr/sbin/mysqld –basedir=/usr –datadir=/var/lib/mysql –user=mys” ermitteln  (Zum Beispiel 2841)
6.)   # kill -9 2841
7.)   # mysqld –skip-grant-tables  (Jetzt den mysqldaemon mit der Option “skip-grant-tables” starten)
8.)   # mysql -u root -p mysql
9.)   mysql> UPDATE mysql.user SET Password=’123? WHERE User=’root’;  (SQL Command setzt Passwort auf 123 )
10.)  mysql> FLUSH PRIVILEGES;  (Berechtigungen neu laden)
11.)  mysql> exit    (SQL Client beenden)
  • SQL-Server beenden und wieder starten

Original-Doku

Datenbank importieren/exportieren

Datenbank export

 mysqldump \
  --databases [DATABASE_NAME] \
  --complete-insert \
  --add-drop-table \
  --host=localhost \
  --user=[USER] \
  --password=[PASSWORD] \
  > [/PATH_TO_EXPORT_FILE]

Datenbank import

mysql -u[USER] -p'[PASSWORD]' --database=[DATABASE_NAME] < [PATH_TO_IMPORT_FILE]

Import von VIEWs

Beim Export von VIEWs werden wird der Benutzer definiert, der die VIEWs angelegt hat. Importiert man die Datenbank mit einem anderen Benutzer, werden die VIEWs nicht angelegt, bzw. werden leere Tabellen statt der VIEWs angelegt. Um die Datenbank unter einem anderen Benutzer incl. der VIEWs importieren zu können, muss das Importfile erst angepasst werden. Mann sucht darin nach DEFINER und löscht die auskommentierten Zeilen. Danach lassen sich die VIEWs auch mit einem anderen Benutzer improtieren. Die DEFINER Zeilen sehen so, oder so ähnlich aus:

 /*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */