Проблема с подключением к внешней базе данных MySQL

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

mysql -h db.hostname.com -u username -pP@ssword database_name

И это ошибка:

ОШИБКА 1044 (42000): для пользователя 'username'@'%' запрещен доступ к базе данных 'database_name'

Я уже попросил администратора внешнего сервера добавить наш IP в их брандмауэр, но безрезультатно.

Это как-то связано с предоставлением привилегий для имени пользователя

2 ответа

Решение

Это не проблема с брандмауэром, так как MySQL запрещает соединение. Как вы подозреваете, это проблема с привилегиями, предоставленными пользователю. Вам нужно выполнить это на сервере MySQL (вам может потребоваться немного изменить это, если вы не хотите предоставлять все привилегии для БД):

GRANT ALL ON database_name.* TO 'username'@'%' IDENTIFIED BY 'P@ssword';

Также обратите внимание, что если вы всегда подключаетесь с определенного хоста /ip, лучше указывать этот хост / ip вместо использования подстановочного знака %, что позволило бы подключения из любого места.

Похоже, что пароль неверный, или что имя пользователя, которое вы пытаетесь использовать, не может подключиться с IP-адреса вашего компьютера.

Как вы знаете, администратор mysql на удаленном сайте может указать, к каким IP-адресам разрешено подключаться, используя любую учетную запись пользователя. Помните, что IP-адрес вашего компьютера может быть направлен через все виды маршрутизаторов и брандмауэров на стороне вашей компании, прежде чем вы достигнете внешней базы данных. В результате ваш IP-адрес может отличаться от внешнего источника. В этом случае не помогает, если внешний администратор базы данных добавляет ВАШ IP в список "разрешенных", вместо этого ему следует добавить IP-адрес "внешнего мира".

Самый простой способ выяснить, относится ли это к вам, заключается в следующем: посетите сайт www.whatismyip.com и запишите IP-адрес на экране. Это ваш IP, как видно из "внешнего мира". Весьма вероятно, что этот IP на самом деле является внешним IP-адресом брандмауэра или маршрутизатора в сети вашей компании, а не IP-адресом вашего компьютера вообще.

Далее (если вы работаете в Windows) перейдите в Пуск> Выполнить. Введите cmd и нажмите ввод. Введите ipconfig и нажмите Enter. Теперь вы можете увидеть свой локальный IP-адрес.

Если эти два IP-адреса не совпадают, попросите удаленного администратора добавить IP-адрес внешнего мира в список "разрешенных".

также - как только вы идете в производство и переносите свой код на другой сервер, IP-развлечения начинаются снова. Вы могли бы также исправить это прямо сейчас

Другие вопросы по тегам