Похоже, у вас может быть один или несколько анонимных пользователей.
Чтобы увидеть, как они запускают этот запрос:
SELECT user,host,password FROM mysql.user WHERE user='';
Чтобы увидеть, что вы аутентифицировались как таковой, запустите:
SELECT USER(),CURRENT_USER();
Это покажет, как вы пытались войти в систему и как mysql позволил вам войти .
Запустите эти два запроса:
DELETE FROM mysql.user WHERE user='';
FLUSH PRIVILEGES;
Это должно сделать это !!!
CAVEAT # 1
Если это не работает, проверьте /etc/my.cnf для этой опции:
skip-grant-tables
Если это есть в my.cnf, удалите его и перезапустите mysql.
CAVEAT # 2
Что-то еще нужно учитывать, этоНаличие нескольких пользователей root.Пожалуйста, запустите это:
SELECT user,host,password FROM mysql.user WHERE user='root';
Если вы определили root как пароль и по-прежнему входите в систему как root, это свидетельствует о наличии нескольких пользователей root.Эти записи могут быть в mysql.user
- root @ localhost
- root@127.0.0.1
- root @ 'hostnameofserver'
mysql может разрешить аутентификацию от любого пользователя root, если у пользователя root нет пароля.Это должно проявиться при запуске SELECT USER(),CURRENT_USER();
, поскольку выходные данные каждой функции будут отображаться как разные.
Если у одного пользователя root есть пароль MD5, а у всех остальных пользователей root вы можете распространить этот пароль MD5.для других пользователей root следующим образом:
UPDATE mysql.user
SET password =
(
SELECT password FROM mysql.user
WHERE user='root' AND password <> ''
)
WHERE user='root' AND password = '';
FLUSH PRIVILEGES;