Skip to main content

User auf neuen Server umziehen

Um einen MySQL-Benutzer inklusive seines verschlüsselten Passworts und aller Rechte 1:1 auf einen neuen Server zu übertragen, nutzt du am besten das MySQL-Kommando SHOW CREATE USER.

Schritt 1: Benutzer und Passworthash auf dem alten Server auslesen

Melde dich auf dem alten Server in MySQL an:

Bash
mysql -u root -p
Führe folgenden Befehl für den gewünschten Benutzer aus (ersetze benutzername und localhost bzw. % entsprechend):

SQL
SHOW CREATE USER 'benutzername'@'localhost';
Ausgabe:
MySQL gibt dir ein fertiges CREATE USER-Statement zurück, das das bereits gehashte Passwort enthält. Das sieht ungefähr so aus:

SQL
CREATE USER 'benutzername'@'localhost' IDENTIFIED WITH 'caching_sha2_password' AS '$A$005$...' FAILED_LOGIN_ATTEMPTS 0 PASSWORD_LOCK_TIME 0 ACCOUNT UNLOCK PASSWORD EXPIRE DEFAULT;
(Kopiere dieses gesamte CREATE USER ...-Statement).

Schritt 2: Berechtigungen (Grants) auslesen

Lies direkt danach die zugewiesenen Rechte des Benutzers aus:

SQL
SHOW GRANTS FOR 'benutzername'@'localhost';
Ausgabe:
Du erhältst eine oder mehrere Zeilen mit GRANT-Befehlen, zum Beispiel:

SQL
GRANT ALL PRIVILEGES ON `meine_datenbank`.* TO `benutzername`@`localhost`;
(Kopiere alle ausgegebenen GRANT-Zeilen).

Schritt 3: Benutzer auf dem neuen Server anlegen

Melde dich auf dem neuen Server in MySQL an:

Bash
mysql -u root -p
  1. Füge den in Schritt 1 kopierten CREATE USER-Befehl ein und führe ihn aus.

  2. Füge die in Schritt 2 kopierten GRANT-Befehle ein und führe sie aus.

  3. Aktualisiere die Rechtematrix:

SQL
FLUSH PRIVILEGES;

Alternative: Automatisiert über die Kommandozeile (für viele User)

Wenn du den Benutzer direkt über ein Terminal-Einzeiler exportieren möchtest, kannst du pt-show-grants aus den Percona Toolkit nutzen oder pt-show-grants / mysqldump verwenden:

Bash
# Exportiert CREATE USER und GRANT Statements direkt in eine SQL-Datei
mysql -u root -p -BN -e "SHOW CREATE USER 'benutzername'@'localhost';" > user_export.sql
mysql -u root -p -BN -e "SHOW GRANTS FOR 'benutzername'@'localhost';" >> user_export.sql
Diese user_export.sql kannst du auf den neuen Server übertragen und mit mysql -u root -p < user_export.sql importieren.