На главную
- Инструкции для UNIX-систем
- Обзор
- Подключение к серверу по SSH
- Подключение к серверу по SFTP
- Авторизация по SSH-ключу
- Смена или сброс пароля root
- Смена пароля root для MySQL
- Добавление пользователей
- Управление правами доступа
- Защита SSH от подбора пароля. Fail2ban
- Создание дампа базы и восстановление данных
- Установка LAMP на Ubuntu
- Установка phpMyAdmin на Ubuntu с LAMP
- Установка SSL-сертификата на Nginx
- Установка модулей PHP (CentOS)
- Установка модулей PHP (Debian / Ubuntu)
- Настройка параметров PHP (CentOS)
- Настройка параметров PHP (Debian / Ubuntu)
- Настройка перенаправлений
- Настройка перенаправлений (Nginx)
- Настройка FTP в Ubuntu 20.04
- Оптимизация MySQL с помощью MySQLTuner
- Сканирование с помощью ClamAV
- Управление службами в systemd
- Логирование в systemd
- Аудит системных событий
- Добавление дополнительного IP
- Настройка статического IP
- Добавление и удаление диска
- Изменение размера диска
- Монтирование резервных копий
- Создание swap, изменение его размера
- Установка и удаление программ. Менеджеры пакетов
- Установка графической оболочки XFCE на Ubuntu
- Настройка iptables
- Настройка OpenVPN
- Установка произвольной ОС на сервер
- Удаленный доступ к MySQL
- Установка QEMU-агента
- Установка Zabbix-агента
- Установка и работа с PostgreSQL
- Установка почтового сервера iRedMail
- Настройка почтового сервера iRedMail
- Установка SSL на сервер с Keitaro
- Запуск Wordpress на сервере c Ubuntu
- Запуск бота в фоновом режиме
- Установка сертификатов Минцифры
- Подготовка образа для создания облачного сервера
- Создание и развертывание образа с помощью утилиты dd
- Установка Minecraft на CentOS 7
- Запуск сервера Minecraft
- Запуск сервера с CS 1.6 и EngineGP
- Запуск сервера RageMP
- Настройка Outline VPN
- Диагностика и решение проблем
- Инструкции для Windows
- Панели управления
Удаленный доступ к MySQL
По умолчанию сервер MySQL разрешает только локальные подключения, то есть выполняемые с сервера, на котором он работает.
Если же требуется подключаться к MySQL извне, со сторонних адресов, необходимо выполнить следующее:
- Внести изменения в конфигурационный файл MySQL.
- Разрешить пользователю или пользователям MySQL удаленные подключения.
Шаг 1. Редактирование конфигурационного файла
В Ubuntu файл размещается, как правило, по пути /etc/mysql/mysql.conf.d/mysqld.cnf.
В CentOS это могут быть /etc/mysql/my.cnf или /etc/my.cnf.
Откройте файл для редактирования, указав нужный путь:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Найдите в нем следующие строки:
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
Параметр bind-address определяет, с каких адресов MySQL разрешает подключения. В данном случае оно возможно только с локального сервера (localhost, 127.0.0.1).
Укажите здесь нужные вам настройки:
- Чтобы разрешить доступ с конкретного IP-адреса, укажите его вместо 127.0.0.1.
- Чтобы разрешить доступ с любых IP-адресов, укажите здесь 0.0.0.0. Обратите внимание, что такая настройка может быть небезопасной.
Закройте файл, сохранив изменения (в nano это можно сделать с помощью клавиш Crtl X → Y → Enter).
После перезапустите MySQL:
sudo systemctl restart mysql
Шаг 2. Создание пользователя MySQL
Все пользователи MySQL, имеющие доступ только к локальным подключениям, имеют учетную запись вида user@localhost. Чтобы разрешить пользователю подключаться удаленно, нужно добавить для него учетную запись user@нужный_IP (или user@%, тогда будет возможно подключение с любого IP).
Эту настройку можно выполнить через консоль или через phpMyAdmin.
Через консоль
Подключитесь к MySQL:
sudo mysql
С помощью команд ниже создайте пользователя и выдайте ему необходимые привилегии. В примере используется ALL PRIVILEGES, но в зависимости от ваших задач вы можете выдавать только отдельные права доступа (например, CREATE, INSERT, UPDATE и т.д.).
Для того, чтобы создаваемый пользователь мог подключаться к конкретной базе с любого адреса, используйте команду:
mysql> GRANT ALL PRIVILEGES ON имя_базы.* TO 'имя_пользователя'@'%' IDENTIFIED BY 'пароль';
Если нужно, чтобы пользователь мог подключаться только с определенного адреса, укажите его вместо %, например:
mysql> GRANT ALL PRIVILEGES ON имя_базы.* TO 'имя_пользователя'@'123.45.67.8' IDENTIFIED BY 'пароль';
С помощью следующей команды можно разрешить пользователю подключение ко всем базам вместо одной конкретной:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'имя_пользователя'@'123.45.67.8' IDENTIFIED BY 'пароль';
Через phpMyAdmin
В phpMyAdmin перейдите в раздел «Учетные записи пользователей» -> «Добавить новую учетную запись».
В пункте «Имя хоста» выберите «Любой хост» и укажите либо %, чтобы разрешить подключение с любого адреса, либо конкретный IP.
На следующем шаге задайте нужные привилегии для пользователя. Это может быть полный набор прав или с определенными ограничениями (например, вы можете запретить новой учетной записи удалять таблицы базы данных; таким образом удаление будет возможно только при локальном подключении).
Ограничения файрвола
Удаленное подключение к MySQL может ограничиваться настройками файрвола. Например, на сервере с Bitrix 7 такое подключение вероятнее всего будет недоступно из-за ограничений iptables. Потребуется дополнительно внести изменения в правила — открыть порт 3306.
Можно открыть доступ к нему с любого адреса, но такая настройка является небезопасной. Рекомендуется разрешать доступ для конкретного IP.
В iptables это можно сделать командой:
sudo iptables -A INPUT -s 123.45.67.8 -p tcp --destination-port 3306 -j ACCEPT
Замените адрес из примера на нужный вам.
Если на сервере используется UFW, настройку можно выполнить с помощью:
sudo ufw allow from 123.45.67.8 to any port 3306
После завершения настройки проверьте, что пользователь может подключиться к MySQL удаленно.
mysql -u имя_пользователя -h адрес_хоста_mysql -p