Ik schijn niet in staat te zijn om een eenvoudige gebruiker die ik'heb verwijderd opnieuw aan te maken, zelfs niet als root in MySQL.
Mijn geval: gebruiker 'jack' bestond al eerder, maar ik heb hem verwijderd uit mysql.user om hem opnieuw aan te maken. Ik zie geen overblijfselen hiervan in die tabel. Als ik dit commando uitvoer voor een andere, willekeurige gebruikersnaam, zeg 'jimmy', werkt het prima (net zoals het oorspronkelijk deed voor 'jack').
Wat heb ik gedaan om gebruiker 'jack' te beschadigen en hoe kan ik die beschadiging ongedaan maken om 'jack' opnieuw aan te maken als een geldige gebruiker voor deze installatie van MySQL?
Zie het voorbeeld hieronder. (Natuurlijk, oorspronkelijk zat er veel tijd tussen het aanmaken van 'jack' en zijn verwijdering).
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)
Probeer een FLUSH PRIVILEGES
te doen. Deze MySQL bug post over die foutcode lijkt enig succes te melden in een geval vergelijkbaar met het jouwe na het flushen van privs.
Je zou op die manier niet handmatig gebruikers moeten verwijderen. MySQL heeft REVOKE
syntax voor het verwijderen van privileges en DROP USER
voor het verwijderen ervan:
REVOKE priv1,priv2,priv3,etc... FROM 'jack@localhost'; // remove certain privileges
DROP USER 'jack@localhost'; // completely delete the account
Het beste is om de meegeleverde tools te gebruiken in plaats van op de achtergrond te rommelen.