Parece-me incapaz de recriar um usuário simples que excluí, mesmo como root no MySQL.
Meu caso: o usuário 'jack' existia antes, mas eu o apaguei do mysql.user para recriá-lo. Não vejo vestígios disso nessa tabela. Se eu executar este comando para outro nome de usuário aleatório, digamos 'jimmy', ele funcionará bem (exatamente como originalmente para 'jack').
O que eu fiz para corromper o usuário 'jack' e como posso desfazer essa corrupção para recriar 'jack' como um usuário válido para esta instalação do MySQL?
Veja o exemplo abaixo. (Obviamente, originalmente, havia muito tempo entre a criação de 'jack' e sua remoção.)
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)