Как настроить удаленный доступ к базе данных MySQL 8 на Linux Ubunty

Время чтения - 2 мин, 43 сек.
05 янв, 17:47
Дата
836

Просмотров

Приветствую. Настройка VPS или VDS дело не совсем простое. Поэтому записываю этот мануал чтобы вы поняли как настроить удаленный доступ к базе данных Mysql версии 8.

Мы разберем здесь несколько задач:

  • Как подключиться к Mysql из консоли
  • Как открыть доступ ко всем IP адресам или одному определенному
  • Перезапуск сервера Mysql
  • Установка доступа для удаленного подключения для ROOT пользователя.
  • Подключение к Mysql с уделенного сервера.

1. Настроим доступ со всех адресов а не только локально

Для Mysql версии 8.0 настройки конфигурации находятся в файле по пути:

/etc/mysql/mysql.conf.d/mysqld.cnf

В файле находим строчку: bind-address = 127.0.0.1 (Она отвечает за доступ с каких IP адресов можно к Mysql подключаться. По умолчанию адрес 127.0.0.1 это локальный, что значит подключиться из вне недоступно).

Для того, чтобы открыть доступ к нужному IP, его нужно прописать вместо 127.0.0.1. Если необходим доступ с любого адреса, то написать как показано ниже.

bind-address = 0.0.0.0

Также в некоторых случаях помимо этой команды может быть некомментированная строка где есть слово skip-networking и её надо закомментировать.

Файл редактировать можно как в консоли стандартными средствами, как например редактором Nano или можно подключиться через программу такую как FileZilla по SSH.

После сохранения файла с изменениями надо перезагрузить MySql сервис командой:

sudo service mysql restart

или можно так:

/etc/init.d/mysql restart

2. Входим в Mysql и открываем удаленный доступ для пользователя ROOT или любого другого

Теперь подключаемся к MySql с паролем суперпользователя:

sudo mysql -p

После подключения к MySql нужно создать пользователя и дать привилегию. Это пример не работает на Mysql 8 👇

mysql> GRANT ALL PRIVILEGES ON userdatabase.* TO "user"@"192.168.0.10" IDENTIFIED BY "password";

Начиная с MySQL 8, вы больше не можете (неявно) создавать пользователя с помощью этой GRANTкоманды. Вместо этого используйте CREATE USER, за которым следует оператор GRANT:

mysql> CREATE USER "root"@"%" IDENTIFIED BY "PASSWORD";

🔼 Командой выше мы создаем пользователя и доступ с какого ip можно подключаться. Символ % - обозначает со всех адресов. Вместо root вы можете указать любого другого созданного пользователя в базе данных.

mysql> GRANT ALL PRIVILEGES ON *.* TO "root"@"%" WITH GRANT OPTION;

🔼 Здесь мы дублируем пользователя и c какого IP.

mysql> FLUSH PRIVILEGES;

🔼 Даем привилегии.

3. Как подключаться удаленно к серверу Mysql

Для подключения к серверу, на котором находится база данных надо предоставить адрес, логин, пароль и название базы данных.

Адрес для подключения к удаленному серверу будет IP адрес сервера без каких либо портов.

Логин и пароль у вас есть при создании пользователя. Базу данных вы можете посмотреть в списке всех баз данных Mysql, посредством команды:

mysql> SHOW DATABASES;

4. Проверка изменений

Чтобы посмотреть с каких ip адресов можно подключаться к учетной записи Mysql можно посмотреть командой.

Mysql> SELECT host FROM mysql.user WHERE user = "root";

root - это пользователь, через который вы будете подключаться.

В консоли у вас появится список:

Должен добавиться второй пункт (хост IP или %). Пример на фото 👇

Доступ к пользвателю Mysql с другого адреса помимо localhost
Доступ к пользвателю Mysql с другого адреса помимо localhost

Если у вас фильтрация трафика то надо разрешить доступ с нужного IP или всех IP адресов к портам MySQL.

Чтобы проверить, какие порты прослушивает служба mysql:

ss -tulpn| grep -E "mysql|mariadb"

Будут показаны порты как на фото

Порты доступные для подключения к пользователю Mysql
Порты доступные для подключения к пользователю Mysql

Настройка дело непростое. Поэтому я предоставляю помощь в настройке. Пишите в Телеграм, если нужно моё экспертное мнение.

Маргарита Морозова
Автор

Что надо знать про Cookie файлы с флагом HttpOnly
Программирование
Несмотря на то, что файлы cookie HttpOnly не могут быть прочитаны с помощью JavaScript, все же можно перезаписать файлы cookie HttpOnly с помощью JavaScript.
Январь
656
Bash скрипт для проверки публичных репозиториев Github и уведомления о них
Программирование
В этом руководстве мы покажем shell скрипт, который проверяет наличие всех публичных репозиториев под учетной записью GitHub и отправляет уведомление по электронной почте.
Октябрь 2022
793
DDoS атака с помощью Torshammer
Программирование
Проведение DDoS-атак на веб-сайты является уголовным преступлением, запрещенным законом во всем мире. Но в качестве образовательных целей мы рассмотрим процесс атаки.
Октябрь 2022
449
Записать данные в сессию php
Программирование
Записать данные в сессию на php так же легко, как записать данные в файл или cookie, однако надо знать как создавать сессионные переменные и присваивать им значение.
Сентябрь 2019
1199
Режимы работы с файлом php
Программирование
Выделяют шесть режимов работы с файлами в php, которые используется для манипуляции с файлами, в частности для открытия, создания и записи. Используется в функции fopen(), в качестве второго аргумента.
Сентябрь 2019
1175