Войти

Что вас интересует?

Создание отдельного пользователя БД в Битрикс

Иногда при разработке необходимо работать с БД на прямую, для этого нужно подключиться к БД через клиент (PhpStorm, Mysql Workbench).

Изначально порт 3306 закрыт для подключения из другого сервера.

Здесь я опишу как открыть данный порт и создать удаленного пользователя для конкретного ip адреса, т.е. в качестве безопасности вы создаете удаленного пользователя который сможет подключаться к БД mysql только с конкретного ip адреса.

Настройка удаленного пользователя MySQL

Подключаемся к БД в консоли:

mysql -u root -p
Создайте нового удалённого пользователя с помощью команды CREATE USER.

Используйте IP-адрес клиентского компьютера в качестве хоста нового пользователя, чтобы ограничить подключение к этой машине.

На случай если опция require_secure_transport будет отключена, добавьте REQUIRE SSL, чтобы ограничить пользователя только SSL-соединениями.

CREATE USER 'remote_user'@'mysql_client_IP' IDENTIFIED BY 'password' REQUIRE SSL;

Затем предоставьте пользователю права на требуемые базы данных или таблицы. Для примера создайте базу данных example и передайте новому пользователю право на неё:

CREATE DATABASE example;
GRANT ALL ON example.* TO 'remote_user'@'mysql_client_IP';

Затем очистите привилегии, чтобы обновить настройки БД:

FLUSH PRIVILEGES;

Закройте оболочку MySQL:

exit

Тестирование удалённых подключений

Примечание: Этот подраздел нужно выполнить на клиенте MySQL.

Подключитесь к клиенту MySQL и убедитесь, что можете создать удалённое подключение к серверу. Опция –u указывает удалённого пользователя, -h задаёт IP-адрес MySQL.

mysql -u remote_user -p -h mysql_server_IP
Предоставьте пароль указанного в команде пользователя, после чего вы будете подключены к удалённому серверу.

Убедитесь, что подключение шифруется:

\s
--------------
. . .
SSL:         Cipher in use is DHE-RSA-AES256-SHA
. . .
Connection:      mysql_server_IP via TCP/IP
. . .
--------------

Вернитесь в оболочку системы:

exit

Попробуйте создать соединение без шифрования:

mysql -u remote_user -p -h mysql_server_IP --ssl-mode=disabled

После запроса пароля соединение будет сброшено:

ERROR 1045 (28000): Access denied for user 'remote_user'@'mysql_server_IP' (using password: YES)

Как видите, поддерживаются только SSL-соединения, а незашифрованные соединения сбрасываются.

На данный момент сервер MySQL поддерживает безопасные удалённые подключения. В целом, этого достаточно для обеспечения безопасности данных. Однако есть некоторые дополнительные рекомендации, которые можно использовать.

Разрешаем доступ к 3306 порту извне для определенного IP адреса.

Разрешаем доступ к 3306 порту извне для определенного IP адреса

 iptables -I INPUT -s xxx.xxx.xxx.xxx/32 -p tcp --dport 3306 -j ACCEPT

Сохраняем правила

/sbin/service iptables save

Чтобы сработало последнее мне понадобилось поставить еще пакет

yum install iptables-services

Решение опиралось на статью

В более поздних версиях решается открытием порта фаервола

Добавляем новую зону:

firewall-cmd --new-zone=replication --permanent
firewall-cmd --reload

Добавляем с созданную зону IP (XXX.XXX.XXX.XXX/32) или подсеть (XXX.XXX.XXX.XXX/XX):

firewall-cmd --zone=replication --add-source=XXX.XXX.XXX.XXX/32 --permanent

Открываем в созданной зоне нужный порт:

firewall-cmd --zone=replication --add-port=3306/tcp --permanent
firewall-cmd --reload

Комментрии
Комементариев нет, будьте первыми....
Оставить комментарий
Пожалуйста, введите ваше Имя.
Пожалуйста, введите ваш Email.
Пожалуйста, напишите комментарий.