Приветствую. Настройка 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 или %). Пример на фото 👇
Если у вас фильтрация трафика то надо разрешить доступ с нужного IP или всех IP адресов к портам MySQL.
Чтобы проверить, какие порты прослушивает служба mysql:
ss -tulpn| grep -E "mysql|mariadb"
Будут показаны порты как на фото
Настройка дело непростое. Поэтому я предоставляю помощь в настройке. Пишите в Телеграм, если нужно моё экспертное мнение.