Ich scheine nicht in der Lage zu sein, einen einfachen Benutzer wiederherzustellen, den ich gelöscht habe, sogar als root in MySQL.
Mein Fall: Der Benutzer 'jack' existierte vorher, aber ich habe ihn aus mysql.user gelöscht, um ihn neu zu erstellen. Ich sehe keine Spuren davon in dieser Tabelle. Wenn ich diesen Befehl für einen anderen, zufälligen Benutzernamen ausführe, z. B. 'jimmy', funktioniert er einwandfrei (genau wie ursprünglich für 'jack').
Was habe ich getan, um den Benutzer 'jack' zu beschädigen, und wie kann ich diese Beschädigung rückgängig machen, um 'jack' wieder als gültigen Benutzer für diese Installation von MySQL anzulegen?
Siehe Beispiel unten. (Natürlich lag ursprünglich viel Zeit zwischen der Erstellung von 'jack' und seiner Entfernung.)
mysql> CREATE USER 'jack'@'localhost' IDENTIFIED BY 'test123';
Query OK, 0 rows affected (0.00 sec)
mysql> select user,host from user;
+------------------+-----------------+
| user | host |
+------------------+-----------------+
| root | 127.0.0.1 |
| debian-sys-maint | localhost |
| jack | localhost |
| root | localhost |
| root | russ-elite-book |
+------------------+-----------------+
5 rows in set (0.00 sec)
mysql> delete from user where user = 'jack';
Query OK, 1 row affected (0.00 sec)
mysql> select user,host from user;
+------------------+-----------------+
| user | host |
+------------------+-----------------+
| root | 127.0.0.1 |
| debian-sys-maint | localhost |
| root | localhost |
| root | russ-elite-book |
+------------------+-----------------+
4 rows in set (0.00 sec)
mysql> CREATE USER 'jack'@'localhost' IDENTIFIED BY 'test123';
ERROR 1396 (HY000): Operation CREATE USER failed for 'jack'@'localhost'
mysql> CREATE USER 'jimmy'@'localhost' IDENTIFIED BY 'test123';
Query OK, 0 rows affected (0.00 sec)
mysql> select user,host from user;
+------------------+-----------------+
| user | host |
+------------------+-----------------+
| root | 127.0.0.1 |
| debian-sys-maint | localhost |
| jimmy | localhost |
| root | localhost |
| root | russ-elite-book |
+------------------+-----------------+
5 rows in set (0.00 sec)
Versuchen Sie ein FLUSH PRIVILEGES
. [Dieser MySQL-Bug-Post zu diesem Fehlercode (http://bugs.mysql.com/bug.php?id=28331) scheint in einem ähnlichen Fall wie dem Ihren nach dem Flushen der Privilegien einen Erfolg zu melden.
Sie sollten Benutzer nicht manuell auf diese Weise löschen. MySQL hat eine REVOKE
-Syntax für das Entfernen von Privilegien und DROP USER
für deren Löschung:
REVOKE priv1,priv2,priv3,etc... FROM 'jack@localhost'; // remove certain privileges
DROP USER 'jack@localhost'; // completely delete the account
Am besten verwenden Sie die bereitgestellten Werkzeuge, anstatt im Hintergrund herumzupfuschen.