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

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

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

12 ответов


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

по умолчанию отключено remote 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.conf.д/тузды.cnf).

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

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

 bind-address = 127.0.0.1

to

 #bind-address = 127.0.0.1

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


после выполнения всего выше я все еще не мог войти в систему как 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 файлы\MySQL\MySQL Server 5.X\bin и выполнить следующую команду.

в mysql -u в корень -п

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

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

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

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

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

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

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

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

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

выход;

enter image description here


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

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


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


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


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


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


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

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

источник