MySQL: Unterschied zwischen den Versionen
Uli (Diskussion | Beiträge) |
Uli (Diskussion | Beiträge) |
||
(7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
+ | =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== | ||
+ | * [https://doku.fietz.net/index.php/MariaDB Diese Erklärung funktioniert bei MariaDB] | ||
+ | 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 '<font color=red>USERNAME</font>'@'localhost' IDENTIFIED BY '<font color=red>PASSWORD</font>'; | ||
+ | GRANT ALL PRIVILEGES ON *.* TO '<font color=red>USERNAME</font>'@'localhost' '''WITH GRANT OPTION;''' | ||
+ | FLUSH PRIVILEGES; | ||
+ | Den <font color=red>roten Text</font> mit Name und Passwort ersetzen | ||
+ | |||
=Root-Passwort zurück setzen= | =Root-Passwort zurück setzen= | ||
Um das root Passort auf einen definierten Wert zurückzusetzen sind folgende Schritte notwendig: | Um das root Passort auf einen definierten Wert zurückzusetzen sind folgende Schritte notwendig: | ||
Zeile 22: | Zeile 71: | ||
mysqldump \ | mysqldump \ | ||
--databases ['''DATABASE_NAME'''] \ | --databases ['''DATABASE_NAME'''] \ | ||
− | |||
--complete-insert \ | --complete-insert \ | ||
--add-drop-table \ | --add-drop-table \ | ||
Zeile 34: | Zeile 82: | ||
= Import von VIEWs = | = Import von VIEWs = | ||
− | Beim Export von VIEWs werden wird | + | 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 */ | /*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ | ||
[[Kategorie:Anwendungen]] | [[Kategorie:Anwendungen]] |
Aktuelle Version vom 15. Juli 2022, 10:44 Uhr
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 */