it-swarm.com.ru

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

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

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

301
Leo

Это разрешено по умолчанию в 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.conf.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 ( nix/OSX и Windows ), чтобы изменения вступили в силу.

673
mjuarez

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

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

select user, Host, password from mysql.user;

Таким образом, в MySQL I установите все пароли для root снова, и я мог наконец войти удаленно как root.

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

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

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

29
Mayur Patel

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

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

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

  • Проверка, принимает ли порт соединения:
telnet (ip сервера mysql) [номер_порта]
  • Добавление правила таблицы ip для разрешения подключений к порту:
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ПРИНЯТЬ
  • Не рекомендую это для производственной среды, но если ваши iptables не настроены должным образом, добавление правил может не решить проблему. В этом случае должно быть сделано следующее:
остановка сервиса iptables

Надеюсь это поможет.

24
Kushal

Пожалуйста, следуйте приведенным ниже инструкциям, чтобы установить удаленный доступ с подстановочными символами для MySQL User.

(1) Открыть cmd.

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

mysql -u root -p

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

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

ПРЕДОСТАВЛЯЙТЕ ВСЕ ПРИВИЛЕГИИ НА *. * ИДЕНТИФИКАТОРУ "ИМЯ ПОЛЬЗОВАТЕЛЯ" @ "IP" ИДЕНТИФИКАТОРУ "ПАРОЛЬ";

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

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

ПАРОЛЬ: пароль от имени пользователя.

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

(5) Сбросьте предпочтения с помощью следующей команды и выйдите.

ПРИВИЛЕГИИ ПРОМЫВКИ;

выход; или \q

enter image description here

13
Hiren Parghi

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

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

6
Timmmm

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

Вы также должны будете добавить привилегии для пользователей, не являющихся -localhostname__.

5
tadman

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

2
Zelkovar

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

2
Dan

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

2
Kasun Siyambalapitiya

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

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

Источник

1
Wesley Smith

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

1
tdmartin102