Кажется, что решение принимать пользователей с 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
Вам необходимо удалить анонимных пользователей, так как Сопоставление с образцом MySQL сначала будет соответствовать им.
Запустить mysql_secure_installation
сценарий или удалить их вручную.