Проблема с подключением к внешней базе данных 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-развлечения начинаются снова. Вы могли бы также исправить это прямо сейчас