1111111111Rating 4.20 (5 Votes)

Ниже расскажу о том, как настроить удаленное подключение к Linux серверу с установленным MySQL, представим ситуацию - есть два сервера, на одном планируется развернуть WEB сервер, на другом сервер БД, это хорошая практика, так сказать первый шаг к масштабируемой структуре, итак начнем.

О том, как настроить LAMP на RHEL рассказано здесь и здесь, касаться установки и базовой настройки служб не буду, представим, что эти этапы уже пройдены.

Разрешаем удаленное подключение к MySQL

Первым делом смотрим что прослушивает наш MySQL:

netstat -nap | grep mysql
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      1666/mysqld

Обратим внимание на 0 0.0.0.0:3306 т.е. из состояния видно, что сервер "слушает" подключения локально, дабы разрешить удаленные подключения необходимо закомментировать параметр skip-networking и добавить параметр bind-address в раздел [mysqld] файла my.cnf:

nano /etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0
bind-address=xxx.xxx.xx.x

где bind-address, адрес сервера на котором установлен MySQL, перед тем, как производить вышеуказанные действия необходимо убедиться, что хост нормально "видит" себя:

host xxx.xxx.xx.x
xxx.xxx.xx.x.in-addr.arpa domain name pointer dbserver.domain.local.

сохраняем файл, перезапускаем сервис mysql:

service mysqld restart

и проверяем состояние:

netstat -nap | grep mysql
tcp        0      0 xxx.xxx.xx.x:3306            0.0.0.0:*                   LISTEN      745/mysqld

отлично, далее необходимо создать базу и разрешить к ней подключение, как это сделать расскажу на примере phpMyAdmin, после входа в административную часть phpMyAdmin необходимо перейти на вкладку Privileges и добавить пользователя mysql - Add user, в данном случае интересует параметр Host, в выпадающем списке необходимо выбрать Use text field и указать IP адрес WEB сервера или сервера с которого будет производиться подключение к БД, подобные действия из терминала:

Создать базу и дать привилегии из терминала mysql

mysql -u root –p mysql
CREATE DATABASE mydb;
GRANT ALL ON mydb.* TO user@'xxx.xxx.xx.x' IDENTIFIED BY 'UserPassword';

или так:

GRANT ALL PRIVILEGES ON mydb.* TO user@'xxx.xxx.xx.x' IDENTIFIED BY 'UserPassword';

Дать привилегии к существующей базе mysql из терминала

update db set Host='xxx.xxx.xx.x' where Db='mydb';
update user set Host='xxx.xxx.xx.x' where user='User';

Разрешить доступ с любого хоста ко всем базам на сервере

GRANT ALL PRIVILEGES ON *.* TO user@'%' IDENTIFIED BY 'UserPassword';

Разрешить удаленные подключения к MySQL в Iptables

iptables -I INPUT -p tcp --dport 3306 -j ACCEPT

Проверка удаленного подключения к MySQL

Проверяем прослушку порта 3306 на сервере БД:

telnet xxx.xxx.xx.x 3306

Примечание: перед проверкой не забываем проверить настройки файервола на БД сервере

Если сервер не отклоняет запрос, пытаемся произвети подключитение к серверу из-под пользователя  user:

mysql -u user –h xxx.xxx.xx.x –p

Или так:

mysql -h serverName -u dbUser -p dbName

Если подключение происходит нормально, перенастраиваем подключение к БД на своей CMS.

Добавить комментарий


Обновить
Защитный код

Сейчас 52 гостей и ни одного зарегистрированного пользователя на сайте

Вверх
Вниз