2011-01-27 4 views
7

Я только что установил сервер сообщества MySQL (5.5.8) в Mac OS X 10.6.6.MySQL появляется DROP USER; но пользователь все еще существует в таблице mysql.users

Я следовал правилам для безопасной установке (назначить пароль поболеть, удалить анонимные счета и т.д.), тем не менее, есть одна учетная запись пользователя, которую я не могу 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> 

As вы можете видеть, что MySQL не сообщает об ошибках при выполнении команды DROP 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' 

Я пытался уронить пользователь снова после этого, но это Бесполезный 't удалить/удалить пользователя.

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

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

ответ

4

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

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

2

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

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

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

6

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

mysql> DELETE FROM mysql.user WHERE User = '' AND Host = 'my-computer-hostname.local';

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

0

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

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

DELETE FROM mysql.user WHERE User=''; 

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

FLUSH PRIVILEGES; 

 Смежные вопросы

  • Нет связанных вопросов^_^