Basisinstallation

Hier die Sammlung meiner meist genutzten MySQL-Befehle.

MySQL-Server installieren:

sudo apt install mysql-server
sudo mysql_secure_installation

Danach folgt die Installation und Konfiguration des MySQL-Servers mit zahlreichen Abfragen, die aber aus meiner Sicht selbsterklärend sind.

root mit Passwort-Authentifizierung einrichten

Ab MySQL 5.7 kommuniziert der root-Nutzer nur noch mit dem auth-sock und ist nicht mehr für direkte Passwort-Authentifizierung eingerichtet. Um sich als MySQL-root mit Passwort authentifizieren zu können, muss dies in der Konfiguration entsprechend eingerichtet werden:

sudo mysql
SELECT user,authentication_string,plugin,host FROM mysql.user;

Nun werden alle mysql-Nutzer und ihre Authentifizierungsmethoden angezeigt. Um dem Nutzer root nun auch die Passwort-Authentifizierung zu gewähren, wird folgendes Kommando ausgeführt:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
FLUSH PRIVILEGES;

Wenn man nun erneut den Befehl

SELECT user,authentication_string,plugin,host FROM mysql.user;

ausführt, sollte die Änderung sichtbar sein.

Danach kann man sich aus der shell mit

mysql -u root -p

Als mysql-Nutzer root anmelden.

MySQL-Nutzer und Datenbanken anlegen

Zuerst als mysql-root anmelden.
Datenbanken anzeigen:

SHOW DATABASES;

Datenbank auswählen:

USE datenbankname;

Alle Tabellen anzeigen:

SHOW TABLES;

Datenbank anlegen:

CREATE DATABASE datenbankname;

Nutzer anlegen:

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

Rechte vergeben:

GRANT ALL PRIVILEGES ON datenbankname . * TO 'username'@'localhost';
FLUSH PRIVILEGES;

Import / Export von Datenbanken

Export (auf der shell):

mysqldump -u username -p datenbankname > /pfad/zum/datenbankexport.sql

Import:

mysql -u username -p datenbankname < /pfad/zum/datenbankimport.sql

Suchen und ersetzen

Hier gibt es 2 grundsätzlich verschiedene Optionen. Wenn es nur um suchen&ersetzen in einer einzelnen Tabelle geht:

UPDATE tabellenname SET feldname = replace(feldname,'suchstring','ersetzstring');

Wenn es darum geht, einen Suchstring in der kompletten Datenbank über viele Tabellen hinweg global zu ersetzen empfiehlt es sich zuerst die Datenbank zu exportieren (s.o.) und danach mit sed den Export zu bearbeiten:

sed -i 's/suchstring/ersetzstring/g' /pfad/zum/datenbankexport.sql

Danach wir der Export wieder importiert (s.o.).

Tabellen reparieren

Wenn der mysql-Server abstürzt, können Tabellen fallweise korrumpieren. Mit

mysqlcheck -u root -p --repair --all-databases

lassen sich von der shell aus alle Tabellen reparieren.