Как разрешить удаленное подключение к MySQL



Я установил MySQL Community Edition 5.5 на моей локальной машине, и я хочу разрешить удаленные соединения, чтобы я мог подключиться из внешнего источника.



Как я могу это сделать?

1376   12  

12 ответов:

это разрешено по умолчанию на MySQL.

то, что отключено по умолчанию, является удаленным root открыть. Если вы хотите, чтобы это, запустите эту команду SQL локально:

 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
 FLUSH PRIVILEGES;

а затем найти следующую строку и закомментировать в своем my.cnf файл, который обычно живет на /etc/mysql/my.cnf в системах Unix / OSX. В некоторых случаях расположение файла - /etc/mysql / mysql.конф.d / mysqld.cnf).

если это система Windows, вы можете найти его в Каталог установки MySQL, обычно что-то вроде C:\Program Files\MySQL\MySQL Server 5.5\ и имя файла будут my.ini.

изменить строку

 bind-address = 127.0.0.1

до

 #bind-address = 127.0.0.1

и перезапустить сервер MySQL ( Unix / OSX и Windows), чтобы изменения вступили в силу.

после выполнения всего выше я все еще не мог войти в систему как root удаленно, но работы с telnet к порту 3306 подтвердил, что MySQL принимал соединения.

Я начал смотреть на пользователей в MySQL и заметил, что были несколько пользователей root С разными паролями.

select user, host, password from mysql.user;

так MySQL Я установите все пароли для root снова и я мог наконец войти в систему удаленно как root.

use mysql;
update user set password=PASSWORD("NEWPASSWORD") where User='root';
flush privileges;

просто заметка из моего опыта, вы можете найти файл конфигурации по этому пути /etc/mysql/mysql.conf.d/mysqld.cnf.

(Я некоторое время боролся, чтобы найти этот путь)

в моем случае я пытался подключиться к удаленному серверу mysql на cent OS. Пройдя через множество решений (предоставление всех привилегий, удаление Привязок ip,включение сети) проблема все еще не была решена.

как оказалось, при просмотре различных решений я наткнулся на iptables, что заставило меня понять, что порт mysql 3306 не принимает соединения.

вот небольшая заметка о том, как я проверил и разрешил это вопрос.

  • проверка, принимает ли порт соединения:
telnet (mysql server ip) [portNo]
  • добавление правила таблицы ip для разрешения соединений на порту:
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
  • не рекомендовал бы это для производственной среды, но если ваши iptables не настроены должным образом, добавление правил все еще не может решить проблему. В этом случае следует сделать следующее:
service iptables stop

надеюсь, что это помогает.

Если ваш серверный процесс MySQL прослушивает 127.0.0.1 или:: 1 только тогда вы не сможете подключиться удаленно. Если у вас есть bind-address настройка в /etc/my.cnf это может быть источником проблемы.

вам также придется добавить привилегии для не -localhost пользователей, а также.

пожалуйста, выполните указанные ниже шаги для того, чтобы установить подстановочный знак удаленного доступа для пользователя MySQL.

(1) Откройте cmd.

(2) Перейдите к пути C:\Program Files\MySQL\MySQL Server 5.X\bin и выполнить следующую команду.

mysql-u root-p

(3) Введите пароль root.

(4) выполните следующую команду для предоставления разрешения.

ПРЕДОСТАВИТЬ ВСЕ ПРИВИЛЕГИИ НА . К 'USERNAME' @ ' IP ' ИДЕНТИФИЦИРОВАН 'Пароль';

имя пользователя: имя пользователя, которое вы хотите подключить к серверу MySQL.

IP: публичный IP-адрес, с которого вы хотите разрешить доступ к MySQL сервер.

пароль: пароль используемого имени пользователя.

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

(5) Очистите previleges, выполнив команду и выход.

FLUSH ПРИВИЛЕГИИ;

выход;

enter image description here

если вы установили MySQL из brew Он действительно слушает только на локальном интерфейсе по умолчанию. Чтобы исправить это, вам нужно отредактировать /usr/local/etc/my.cnf, и bind-address С 127.0.0.1 до *.

затем запустите brew services restart mysql.

для кого это нужно, проверьте брандмауэр порт 3306 открыт тоже, если ваша служба брандмауэра работает.

Просто F. Y. I Я вытащил мои волосы с этой проблемой в течение нескольких часов.. наконец я позвонил своему хостинг-провайдеру и обнаружил, что в моем случае с помощью облачного сервера, который в панели управления для 1and1 у них есть вторичный брандмауэр, который вы должны клонировать и добавить порт 3306. После того, как добавил Я получил прямо в..

и для людей OS X там имейте в виду, что параметр bind-address обычно устанавливается в списке launchd plist, а не в my.ini-файл. Так что в моем случае, я убрал <string>--bind-address=127.0.0.1</string> с /Library/LaunchDaemons/homebrew.mxcl.mariadb.plist.

этот блог Как настроить сервер MySQL в локальной сети будет полезно при настройке MySQL с нуля

если mysqld есть персонализация адрес установить петлевой / локальный адрес (например 127.0.0.1), сервер не будет доступен с удаленных хостов, потому что интерфейс обратной связи не может быть достигнут с любого удаленного хоста.

установите этот параметр в 0.0.0.0 (:: для IPv4+6) принимать соединения с любого хоста или с другим внешним доступным адресом, если вы хотите разрешить соединения только на одном интерфейсе.

источник

Comments

    Ничего не найдено.