mysql: ‘%’ doesn’t match localhost and/or hostname

by itisgood

Проблема:

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

mysql> GRANT ALL PRIVILEGES ON *.* TO prueba@'%' IDENTIFIED BY 'password'

Затем, когда вы пытаетесь получить доступ к серверу mysql, используя:

# mysql -u prueba -ppassword

вы получите следующую ошибку:

ERROR 1045 (28000): Access denied for user 'prueba'@'localhost' (using password: YES)

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

mysql> select User, Host, Password from mysql.user;
+---------+-----------+-------------------------------------------+
| User    | Host      | Password                                  |
+---------+-----------+-------------------------------------------+
| root    | localhost |                                           |
| root    | helicon   |                                           |
| root    | 127.0.0.1 |                                           |
| root    | ::1       |                                           |
|         | localhost |                                           |
|         | apollo    |                                           |
| prueba  | %         | *AC52124462B6D4C373263062D60ED9CD452E574D |
+---------+-----------+-------------------------------------------+
7 rows in set (0.00 sec)

Решение

Просто удалите анонимные учетные записи, и вы сможете войти в систему с пользователем, который вы ранее определили:

mysql > DROP USER ''@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql > DROP USER ''@'apollo';
Query OK, 0 rows affected (0.00 sec)

You may also like

Leave a Comment