Есть четыре (4) СЦЕНАРИИ, на которые следует обратить внимание
СЦЕНАРИЙ № 1
Когда вы указываете -P<port number>
вы должны использовать TCP/IP. Таким образом, -h<IPAddress>
будет работать.
СЦЕНАРИЙ № 2
Когда вы указываете -P<port number>
без -h<IPAddress>
, предполагается localhost
. В этом случае TCP/IP не используется, но для аутентификации используется файл сокета mysql.
СЦЕНАРИЙ № 3
Когда вы указываете -h127.0.0.1
без -P<port number>
, предполагается localhost
. В этом случае TCP/IP не используется, но для аутентификации используется файл сокета mysql.
СЦЕНАРИЙ № 4
Когда вы указываете -h127.0.0.1
с -P<port number>
, localhost
не предполагается. Будет использоваться TCP/IP, но пользователь должен быть правильно определен.
Учитывая сообщение об ошибке:
ОШИБКА 1045 (28000): доступ запрещен для пользователя '' @ 'localhost' (используется пароль: ДА)
и они так, как вы пытались войти
mysql -u -p -P9906 -h127.0.0.1
Вы нажали СЦЕНАРИЙ № 4
ПРЕДЛОЖЕНИЕ
В mysql.user
убедитесь, что у вас есть
user@localhost
(хорошо)
user@127.0.0.1
, (ок)
user@%
(не рекомендуется, но может сделать)
с тем же паролем (или другими паролями, если это необходимо)
После успешного входа в систему, выполните этот запрос
SELECT USER(),CURRENT_USER();
USER() сообщает, как вы пытались пройти аутентификацию в MySQL
CURRENT_USER() сообщает, как вам разрешили проходить аутентификацию в MySQL
Добавление правильного пользователя позволяет вам правильно проходить аутентификацию. Ваша цель должна состоять в том, чтобы настроить пользователей в mysql.user
таким образом, чтобы USER()
и CURRENT_USER()
имели одинаковый вывод или, по крайней мере, как можно более специфичные для хоста.