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

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

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

Ответ 1

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

Ответ 2

После выполнения всего выше, я все еще не мог войти в систему как root удаленно, но Telnetting to port 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;

Ответ 3

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

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

Ответ 4

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

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

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

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

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

Ответ 5

Пожалуйста, следуйте приведенным ниже инструкциям, чтобы установить удаленный доступ с подстановочными символами для 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

Ответ 6

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

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

Ответ 7

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

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

Ответ 8

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

Ответ 9

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

Ответ 11

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

Ответ 12

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

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

Источник

Ответ 13

иногда нужно использовать имя компьютера на Windows

первый шаг) поместите в конфигурационный файл mysql:

mysqld.cnf SET bind-address = 0.0.0.0

(чтобы позволить recibe соединения через TCP/IP)

второй шаг) сделать пользователя в mysql, таблицах пользователей, с именем компьютера в Windows, не IP

enter image description here