повторно установил MariDB 10.4 (fedora 31). Я вхожу в mysql как root:
MariaDB [mysql]> select User, Host,Password from user;
+-------+-----------+-------------------------------------------+
| User | Host | Password |
+-------+-----------+-------------------------------------------+
| root | localhost | *A4B6157319038724E3560894F7F932C8886EBFCF |
| mysql | localhost | invalid |
+-------+-----------+-------------------------------------------+
2 rows in set (0.001 sec)
MariaDB [mysql]
Если я пытаюсь создать нового пользователя:
MariaDB [mysql]> create user 'developer'@'localhost' identified by 'pippo';
ERROR 1396 (HY000): Operation CREATE USER failed for 'developer'@'localhost'
Как указано в первой таблице, пользователь разработчик
не существует.
Разрешения root кажутся нормальными:
MariaDB [(none)]> SHOW GRANTs;
+-------------------------------------------------------------------------------------------------------------------------+
| Grants for root@localhost |
+-------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED VIA mysql_native_password OR unix_socket WITH GRANT OPTION |
| GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION |
+-------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.000 sec)
Обнаружил проблему. Перед созданием пользователя я создал db из дампа. Я проверил таблицы mysql.db и обнаружил, что пользовательский «разработчик» находится в этой таблице, НО не в mysql.user.
MariaDB [mysql]> select * from db;
+------------+----------+-----------+-------------+-------------+-------------+-------------+-------------+-----------+------------+-----------------+------------+------------+-----------------------+------------------+------------------+----------------+---------------------+--------------------+--------------+------------+--------------+
| Host | Db | User | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Grant_priv | References_priv | Index_priv | Alter_priv | Create_tmp_table_priv | Lock_tables_priv | Create_view_priv | Show_view_priv | Create_routine_priv | Alter_routine_priv | Execute_priv | Event_priv | Trigger_priv |
+------------+----------+-----------+-------------+-------------+-------------+-------------+-------------+-----------+------------+-----------------+------------+------------+-----------------------+------------------+------------------+----------------+---------------------+--------------------+--------------+------------+--------------+
| % | mydb | developer | Y | Y | Y | Y | Y | Y | N | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| 10.8.148.% | postal | developer | Y | Y | Y | Y | Y | Y | N | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| 10.8.148.% | mydb | developer | Y | Y | Y | Y | Y | Y | N | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| miyazaki | mydb | developer | Y | Y | Y | Y | Y | Y | N | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| % | helpdesk | develop | Y | Y | Y | Y | Y | Y | N | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| % | helpdesk | developer | Y | Y | Y | Y | Y | Y | N | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
+------------+----------+-----------+-------------+-------------+-------------+-------------+-------------+-----------+------------+-----------------+------------+------------+-----------------------+------------------+------------------+----------------+---------------------+--------------------+--------------+------------+--------------+
Вот в чем проблема. Я уничтожил тревожную базу данных
MariaDB [mysql]> create user 'developer'@'localhost' identified by 'pippo';
Query OK, 0 rows affected (0.002 sec)
Итак, решение:
1 - Проверить инкриминируемого пользователя в этих таблицах;
columns_priv, db, procs_priv, tables_priv
2 - При сбросе не экспортировать несвязанные таблицы.