Статьи 1С-Битрикс

Решил задачу, рассказал об этом

Как настроить удаленный доступ к mysql на виртуальной машине битрикс (vm bitrix)

Как настроить удаленный доступ к mysql на виртуальной машине битрикс (vm bitrix)

Ниже приведу самое полное и правильное руководство, как настроить удаленный доступ c базе данных mysql на виртуальной машине битрикс (vm bitrix), которая находится на сервере Centos 7. Поэтому команды ниже буду приводить именно для этой операционной системы

Настройка удаленного подключения к базе данных mysql

1. Настраиваем сервер БД MySql

Проделываем это на сервере, где лежит база данных

В файле конфигурации БД /etc/my.cnf в блоке [mysqld] прописываем строчку bind-address = 0.0.0.0

Здесь база данных будет слушать все ip адреса для удаленного подключения

Проверяем, если есть строка, содержащая skip-networking, закомментируйте ее, добавив # в начале строки.

Далее в термнале перезагружаем базу, чтобы изменения вступили в силу, командой service mysqld restart для Centos 7

Проверяем открыт или порт 3306 командой nmap -p 3306 xx.xx.xx.xx (,где xx.xx.xx.xx ip сервера на котором настраиваем базу)
Если не установлена команда nmap, установим yum install nmap

2. Предоставляем доступ пользователю с удаленного компьютера

Это делаем также на сервере, где хостится ДБ

На виртуальной машине в файле /root/.my.cnf находится root доступ к базе данных mysql

Коннектимся в терминале linux к базе MySql командой mysql -uroot -p и вводим пароль рут

Создаем нового пользователя базы данных
create user 'bitrix1'@'yy.yy.y.yy' identified by 'password'; (, где yy.yy.y.yy - ip адрес сервера с которого будем подключаться)
и даем ему права- привелегии на использование нужной базы
grant all on dbname.* to 'bitrix1'@'yy.yy.y.yy';

Посмотреть все привелегии для этого пользователя можно командой show grants for 'bitrix1'@'yy.yy.y.yy';
Посмотреть всех пользователей в базе можно командой select user,host,authentication_string from mysql.user;

Выйти из базы можно командой exit;

3. Настройка брандмауэра

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

Устанавливаем разрешение командой iptables -I INPUT 1 -p tcp --dport 3306 -j ACCEPT

Но это не безопасно, поэтому делаем команду с установкой конкретного ip с которого можно коннектится

iptables -I INPUT 1 -s yy.yy.y.yy -p tcp --dport 3306 -j ACCEPT

Обратите внимание на присутствие в строке цифры 1, это означает что это разрешение встанет в начало таблицы iptables в блоке Chain INPUT

Проверить наличие строки можно командой iptables -nL --line-numbers

Если строчка не вначале, удалите её командой iptables -D INPUT line, где line номер строки и выполните команду написанную выше

4 Проверка подключения

В терминале сервера с которого идет запрос к базе вводим команду mysql -u bitrix1 -h xx.xx.xx.xx -p и вводим пароль

Если все шаги выполнены правильно должно осуществится подключение к базе

5. Необходимо прописать в битрикс доступы к удаленной базе

Для этого в файлах /home/bitrix/www/bitrix.settings.php и /home/bitrix/www/bitrix/php_interface/dbconn.php в специальных блоках указать новые данные подключения к ДБ

$DBHost = "xx.xx.xx.xx";
$DBLogin = "bitrix1";
$DBPassword = "password";
$DBName = "dbname";

Ошибки, которые могут возникнуть

ERROR 2003 (HY000): Can't connect to MySQL server on 'xx.xx.xx.xx' (113)

Эта ошибка может возникнуть в пункте 4 по тексту выше. Это означает что брендмауэр не пускает

Access denied for user 'bitrix1'@'yy.yy.y.yy' (using password: YES)

Значит ввели неправильные доступы к удаленной базе

Попробуйте сменить пароль пользователя командой SET PASSWORD FOR 'bitrix1'@'yy.yy.y.yy' = 'NewPassword';

telnet: connect to address xx.xx.xx.xx: No route to host

При использовании команды telnet xx.xx.xx.xx 3306, для проверки коннекта, может выскочить данная ошибка
Значит брендмауэр настроен не правильно
Для установки команды исполним в терминале yum install telnet

Возврат к списку