MySQL
Inhaltsverzeichnis
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
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 */