Как разрешить удаленное подключение к 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 ПРИВИЛЕГИИ;
выход;
если вы установили 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) для приема соединений с любого хоста или с другим внешним доступным адресом, если вы хотите разрешить соединения только на одном интерфейсе.