IT-Storm

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

Menu

Как включить удаленный доступ к вашей базе данных MariaDB/MySQL в Ubuntu

Как включить удаленный доступ к вашей базе данных MariaDB/MySQL в Ubuntu

Введение
MariaDB — это бесплатная система с открытым исходным кодом и одна из самых популярных систем реляционных баз данных в мире. Это замена системе баз данных MySQL. Однако структура и индексы обеих систем баз данных одинаковы. Это позволяет вам переключать базу данных с MySQL на MariaDB без необходимости изменять ваши приложения.

По умолчанию MariaDB настроена на прослушивание только на локальном хосте. Таким образом, к ней могут обращаться только локальные пользователи, работающие на том же сервере, что и база данных. В современной архитектуре веб-приложений,в большинстве случаев, системы управления базами данных (СУБД такие как MySQL и MariaDB) размещаются на выделенном специально для них сервере. Для этого, в СУБД настраиваются разрешения для удаленных подключений.

Настройка разрешений для удаленного подключения также необходима для удаленного управления своими базами данных с помощью  таких утилит как MySQL Workbench, HeidiSQL, DBeaver, Sequel Pro и т.п.

В этом руководстве мы покажем вам, как настроить MariaDB для удаленных подключений вручную (через терминал) с доступом к оболочке на сервере Ubuntu, на котором работает MariaDB версии 10.6 или старше.


Проверка сервера MariaDB


Перед запуском убедитесь, что сервер MariaDB работает, используя следующую команду:
$ ps -ef | grep -i mysql
Вы должны получить следующий результат:
mysql        595       1  0 04:17 ?        00:00:00 /usr/sbin/mysqld
root        1350    1337  0 04:22 pts/0    00:00:00 grep --color=auto -i mysql
По умолчанию сервер MariaDB прослушивает локальный хост только из соображений безопасности. Вы можете проверить это с помощью следующей команды:
$ netstat -ant | grep 3306
В следующем выводе вы должны увидеть, что сервер MariaDB прослушивает локальный хост (127.0.0.1):
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN


Настройка MariaDB


По умолчанию MariaDB разрешает подключение только с локального хоста, все подключения с удаленного сервера по умолчанию запрещены.
Первое, что вам нужно сделать, это настроить сервер MariaDB для прослушивания всех IP-адресов в системе.
Вы можете сделать это, отредактировав файл конфигурации MariaDB по умолчанию. Найдите директиву «bind-address» в одном из двух файлов (внесите изменения в любой файл, в котором вы найдете эту директиву). Вы можете открыть файл с помощью вашего любимого текстового редактора:
$ nano /etc/mysql/my.cnf
или
$ sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
Измените значение адреса привязки (bind-address) с 127.0.0.1 на 0.0.0.0, чтобы сервер MariaDB принимал подключения на всех интерфейсах хоста IPv4.
bind-address = 0.0.0.0
Сохраните и закройте файл. Затем перезапустите службу MariaDB, чтобы применить изменения:
$ sudo systemctl restart mariadb
Теперь вы можете проверить статус прослушивания MariaDB с помощью следующей команды:
$ netstat -ant | grep 3306
Если все в порядке, вы должны получить следующий вывод:
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN
Теперь сервер MariaDB настроен на прослушивание всех IP-адресов.

Примечание. Если вы используете MySQL Server вместо MariaDB, основной файл конфигурации находится в /etc/mysql/mysql.conf.d/mysqld.cnf. Вы можете изменить bind-address, отредактировав этот файл. Остальные шаги такие же, как и для MariaDB.


Предоставление доступа пользователю из удаленной системы


В этом разделе мы создадим новую базу данных с именем wpdb и пользователя с именем wpuser, а также предоставим удаленной системе доступ для подключения к базе данных wpdb от имени пользователя wpuser.

Сначала войдите в оболочку MariaDB с помощью следующей команды:
$ mysql -u admin -p
Укажите свой пароль администратора (root), и когда войдёте в оболочку, создайте базу данных и пользователя с помощью следующей команды:
MariaDB [(none)]> CREATE DATABASE wpdb;
MariaDB [(none)]> CREATE USER  'wpuser'@'localhost' IDENTIFIED BY 'password';
Затем вам нужно будет предоставить разрешения удаленной системе с IP-адресом 208.117.84.50 для подключения к базе данных с именем wpdb от имени пользователя wpuser. Вы можете сделать это с помощью следующей команды:
MariaDB [(none)]> GRANT ALL ON wpdb.* to 'wpuser'@'208.117.84.50' IDENTIFIED BY 'password' WITH GRANT OPTION;
Затем сбросьте привилегии и выйдите из оболочки MariaDB с помощью следующей команды:
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;
Краткое объяснение каждого параметра показано ниже:
 - wpdb: это имя базы данных MariaDB, к которой пользователь хочет подключиться.

 - wpuser: это имя пользователя базы данных MariaDB.
 - 208.117.84.50: это IP-адрес удаленной системы, с которой пользователь хочет подключиться.
 - password: это пароль пользователя базы данных.

Если вы хотите предоставить удаленный доступ ко всем базам данных для wpuser, выполните следующую команду:
MariaDB [(none)]> GRANT ALL ON *.* to 'wpuser'@'208.117.84.50' IDENTIFIED BY 'password' WITH GRANT OPTION;
Если вы хотите предоставить доступ к wpdb как wpuser с любого  удаленного IP-адреса, используйте % вместо IP-адреса (208.117.84.50), как показано ниже:
MariaDB [(none)]> GRANT ALL ON wpdb.* to 'wpuser'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
Если вы хотите предоставить доступ к wpdb от имени пользователя wpuser, всем IP-адресам в подсети 208.117.84.0/24, выполните следующую команду:
MariaDB [(none)]> GRANT ALL ON wpdb.* to 'wpuser'@'208.117.84.%' IDENTIFIED BY 'password' WITH GRANT OPTION;


Настроить брандмауэр (Firewall)


Если на вашем сервере MariaDB настроен брандмауэр UFW, вам необходимо разрешить трафик через порт 3306 из удаленной системы.
Вы можете предоставить доступ к удаленной системе с IP 208.117.84.50 для подключения к порту 3306 с помощью следующей команды:
$ sudo ufw allow from 208.117.84.50 to any port 3306
Если вы хотите предоставить доступ с любого IP-адреса, вы должны использовать следующую команду:
$ sudo ufw allow 3306
Затем перезагрузите брандмауэр с помощью следующей команды:
$ sudo ufw reload
Как только вы закончите, вы можете перейти к следующему шагу.


Проверка соединения из удаленной системы


На данный момент сервер MariaDB настроен на разрешение подключения из удаленной системы с IP-адресом 208.117.84.50. Теперь пришло время проверить соединение клиентской системы с сервером MariaDB. Здесь мы покажем, как это сделать из командной строки в Linux, но вы также можете проверить это со своего рабочего стола (если не в Linux), используя любой удаленный менеджер MySQL, например, перечисленные во введении к этой статье.

Во-первых, вам нужно будет установить клиентский пакет MariaDB в удаленной системе. Вы можете установить его с помощью следующей команды:
$ sudo apt-get install mariadb-client -y
После завершения установки подключитесь к серверу MariaDB, выполнив следующую команду в удаленной системе:
mysql -u wpuser -h 45.148.28.101 -p
Вам будет предложено ввести пароль пользователя wpuser, как показано ниже:
Enter password:
После того, как соединение установлено, вы должны получить следующий вывод:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 50
Server version: 10.4.10-MariaDB-1:10.4.10+maria~bionic-log mariadb.org binary distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
Теперь вы можете получить список баз данных, используя следующую команду:
MariaDB [(none)]> show databases;
Вы должны получить следующий результат:
+--------------------+
| Database           |
+--------------------+
| information_schema |
| wpdb               |
+--------------------+
2 rows in set (0.10 sec)

Заключение
В приведенном выше руководстве мы узнали, как настроить MariaDB для удаленного доступа. Мы также узнали, как предоставить доступ к определенной базе данных или ко всем базам данных с определенного IP-адреса или всех IP-адресов. Надеюсь, что это руководство поможет вам понять, как подключить ваше веб-приложение к базе данных, размещенной на удаленном сервере, и как правильно защитить ее с помощью ограничений IP.

Linux