Содержание
Настроить удаленное подключение к MySQL с другой машины
Как настроить подключение к удаленному серверу MySQL? Пробуем подключиться (192.168.0.17
здесь и далее - удаленный MySQL сервер):
mysql -uUser -h192.168.0.17 -pYourPassword
Если это невозможно, появится ошибка:
Проверить запущен ли mysql
ps -ef | grep mysqld
Должно получиться что-то вроде этого:
root 29329 1 0 17:56 ? 00:00:00 /bin/sh /usr/bin/mysqld_safe mysql 29653 29329 0 17:56 ? 00:00:28 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306
Для запуска демона mysql следует использовать один из вариантов:
service mysqld start systemctl start mysqld.service
для добавления в авто-старт:
systemctl enable mysqld.service
Проверить порт mysql
Важно запустить программу с правами root:
sudo netstat -lnp | grep mysql
Должно быть:
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 4736/mysqld unix 2 [ ACC ] STREAM LISTENING 192127 4736/mysqld /var/run/mysqld/mysqld.sock
tcp
должен слушать 0.0.0.0
, если нет - см. далее
Порт 3306
- стандартный порт mysql
, если же используется нестандартный, его следует использовать при подключении:
mysql dbname -uuser -ppasswd -P<port> ...
Настройка адресов подключения
Следует исправить строку конфига bind_address
, чтобы разрешить для всех - закомментировать:
- /etc/mysql/my.cnf
# bind_address=127.0.0.1
затем перезапустить сервер одним из вариантов:
service mysqld restart systemctl restart mysqld.service
В более сложных случаях bind_address
можно назначить:
bind_address=*
илиbind_address=::
- слушать все IPv4 и IPv6 TCP/IP интерфейсы0.0.0.0
- все IPv4- IP-адрес или название хоста - будет разрешено соединение только с него
- IPv4 маска - как ограничение серверов
Проверить файрвол
На стороне сервера mysql:
sudo service iptables status
На стороне сервера приложений, с которого необходимо подключиться к mysql:
nmap -p 3306 192.168.0.17
Должно быть:
3306/tcp open mysql