Ошибка MySQL: [Warning] user entry root@

После установки сервера mysql в логе daemon.log появляется такая ошибка:

 Jul 24 15:29:08 srv mysqld: 140724 15:29:08 [Warning] 'user' entry 'root@example.com' ignored in --skip-name-resolve mode. Jul 24 15:29:08 srv mysqld: 140724 15:29:08 [Warning] 'proxies_priv' entry '@ root@example.com' ignored in --skip-name-resolve mode. 

Всему виной отключённый DNS резольвинг: определение доменного имени для ip-адресов подключённых к mysql серверу клиентов. Мне на сервере эта функция не нужна, поэтому отключена параметром skip-name-resolve в файле my.cnf.

Исправляется возникающая ошибка подобным образом. Подключаемся к mysql серверу и выбираем базу mysql.

mysql> use mysql;

Затем выбираем таблицу user.

mysql> select Host, User from user;

Отобразится результат, в котором будут видны пользователи и хосты, для которых доступна авторизация этих пользователей.

 +---------------------+------------------+ | Host                | User             | +---------------------+------------------+ | 127.0.0.1           | root             | | ::1                 | root             | | example.com         | root             | +---------------------+------------------+ 13 rows in set (0.00 sec) 

Затем выбираем следующую таблицу — proxies_priv.

mysql> select Host, User from proxies_priv;

Её содержимое будет примерно таким:

+---------------------+------+ | Host                | User | +---------------------+------+ | localhost           | root | | example.com         | root | +---------------------+------+ 2 rows in set (0.00 sec) 

Как видим, здесь есть «лишний» root с доступом для домена example.com. Также может быть указано и просто имя хоста, например, root@example. Именно этот пользователь вызывает ошибку. Удаляем его:

mysql> deluser 'root'@'example.com';

В довершение обновляем привилегии.

mysql> flush privileges;

Повторю, что этот способ подходит только если вам не нужны внешние подключения к серверу mysql от имени root. В остальных случаях следует включать резольвинг ДНС.