Назад | Перейти на главную страницу

Root не может предоставлять привилегии в базе данных MySQL

У меня есть база данных MySQL, и я не могу предоставлять разрешения пользователям на вновь созданных базах данных при входе в систему как root.

mysql> create database test1;
Query OK, 1 row affected (0.00 sec)

mysql> grant usage on *.* to 'test'@'%' identified by 'test';
ERROR 1045 (28000): Access denied for user 'root'@'%' (using password: YES)
mysql> show grants for root;
+--------------------------------------------------------------------------------------------------------------+
| Grants for root@%                                                                                            |
+--------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*hash_is_here' |
+--------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> select user();
+-----------------+
| user()          |
+-----------------+
| root@172.17.0.4 |
+-----------------+
1 row in set (0.01 sec)

Как видите, я могу войти в систему как root, root имеет все права на .. Есть идеи, как это могло случиться? Я не обновлял MySQL, сохраняя данные (я знаю, что это могло быть вызвано обновлением с 5 до 5.5). Спасибо.

У вас есть все привилегии для корень @% но не «вариант предоставления». В моей установке MySQL, где моя учетная запись root может применять грант, это результат "show grants":

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*some_hash' WITH GRANT OPTION

В MySQL предоставление "все привилегии"не включает грант. Это должно быть указано явно.

Даже если вы не на 5.5, возможно, вам все равно нужно запустить mysql_upgrade из /mysql/bin каталог?

См. Первый ответ здесь: