MySQL появляется для DROP USER; но пользователь все еще существует в таблице mysql.users - PullRequest
7 голосов
/ 27 января 2011

Я только что установил сервер MySQL Community (5.5.8) в Mac OS X 10.6.6.

Я следовал правилам безопасной установки (назначить пароль для root, удалить анонимные учетные записи)и т. д.), однако есть одна учетная запись пользователя, которую я не могу DROP:

mysql> select host, user from mysql.user;
+--------------------------------+------+
| host                           | user |
+--------------------------------+------+
| 127.0.0.1                      | root |
| ::1                            | root |
| My-Computer-Hostname.local     |      |
| My-Computer-Hostname.local     | root |
| localhost                      | root |
| localhost                      | web  |
+--------------------------------+------+
6 rows in set (0.00 sec)

mysql> drop user ''@'My-Computer-Hostname.local';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> select host, user from mysql.user;
+--------------------------------+------+
| host                           | user |
+--------------------------------+------+
| 127.0.0.1                      | root |
| ::1                            | root |
| My-Computer-Hostname.local     |      |
| My-Computer-Hostname.local     | root |
| localhost                      | root |
| localhost                      | web  |
+--------------------------------+------+
6 rows in set (0.00 sec)

mysql> 

Как видите, MySQL не сообщает об ошибках при выполнении команды DROP USER, но фактически не удаляетuser!

Я также пытался удалить пользователя из phpMyAdmin (3.3.9), и это дало те же результаты (т. е. сообщение об успешном завершении, сообщений об ошибках нет, пользователь не удален).Я исследовал это, и некоторые люди предполагают, что GRANT может блокировать команду DROP USER, однако у пользователя нет привилегий GRANT:

mysql> SHOW GRANTS FOR ''@'My-Computer-Hostname.local';
+-----------------------------------------------------------+
| Grants for @my-computer-hostname.local                |
+-----------------------------------------------------------+
| GRANT USAGE ON *.* TO ''@'my-computer-hostname.local' |
+-----------------------------------------------------------+
1 row in set (0.00 sec)

mysql> REVOKE GRANT OPTION ON *.* FROM ''@'My-Computer-Hostname.local';
ERROR 1141 (42000): There is no such grant defined for user '' on host 'my-computer-hostname.local'

После этого я снова попытался удалить пользователя, но этого не произошло.удалить / удалить пользователя либо.

Я проверил свои журналы ошибок MySQl, и в этом нет ничего необычного.

Руководство MySQL предлагает, что возможно удалить все анонимные учетные записи, поэтому почему я не могу удалить эту

Ответы [ 4 ]

9 голосов
/ 05 июля 2011

Или, чтобы удалить только анонимный, а не корневой каталог:

mysql> УДАЛИТЬ ИЗ mysql.user, ГДЕ пользователь = '' И хост = 'my-computer-hostname.local';

Работал у меня на 5.1.57.

4 голосов
/ 28 февраля 2012

Это известная ошибка из-за символов в верхнем регистре: http://bugs.mysql.com/bug.php?id=62255

Используйте предложение пользователя douger в качестве обходного пути

2 голосов
/ 27 февраля 2011

Вы все еще можете удалить записи из пользовательской таблицы:

mysql> DELETE FROM user WHERE host='my-computer-hostname.local';
Query OK, 2 rows affected (0.00 sec)

Этот метод использовался до MySQL 4.1 ...

0 голосов
/ 17 июля 2017

MySQL включает в себя учетную запись анонимного пользователя, которая позволяет любому подключаться к серверу MySQL, не имея учетной записи пользователя.Это предназначено только для тестирования и должно быть удалено до помещения сервера базы данных в производственную среду.

Запустите следующий сценарий SQL для сервера MySQL, чтобы удалить учетную запись анонимного пользователя:

DELETE FROM mysql.user WHERE User='';

После внесения изменений в разрешения / учетные записи пользователей обязательно очистите таблицы провинций с помощью следующей команды:

FLUSH PRIVILEGES;
...