Назад | Перейти на главную страницу

Почему mySQL не разрешает пользователям @ '%' с localhost?

Кажется, что решение принимать пользователей с localhost - создать копию пользователя с @ 'localhost' (в дополнение к user @ '%'). Я очень стараюсь понять логику здесь, потому что кажется немного сумасшедшим, что подстановочный знак «любой хост», «%», также не будет принимать соединения с локальным хостом. Создание второго пользователя не очень практично при работе с большим количеством пользователей. Если пользователь изменит свой собственный пароль, это не повлияет на другой.

Есть ли какое-либо обходное решение, позволяющее пользователю @ '%' принимать соединения localhost?

В localhost Стиль подключения к mysqld заставляет клиента mysql аутентифицироваться через файл сокета.

Подключение через подстановочный знак % требует подключения к mysqld через TCP / IP.

Если есть myuser@'%' с паролем mys3cr3t, и вы не хотите добавлять myuser@'localhost', Я хотел бы предложить следующее:

Подключитесь к mysql вот так

mysql --protocol=tcp -umyuser -pmys3cr3t

С помощью --protocol=tcp заставляет клиентскую программу mysql использовать TCP / IP для подключения

После подключения запустите этот запрос

SELECT USER(),CURRENT_USER();

ПОЛЬЗОВАТЕЛЬ () сообщает, как вы пытались пройти аутентификацию в MySQL

ТЕКУЩИЙ ПОЛЬЗОВАТЕЛЬ() сообщает, как вам разрешили аутентифицироваться в MySQL

Я писал об этом в DBA StackExchange 18 января 2012 г..

Вам необходимо удалить анонимных пользователей, так как Сопоставление с образцом MySQL сначала будет соответствовать им.

Запустить mysql_secure_installation сценарий или удалить их вручную.