---
title: "Удаленный доступ к MySQL, развернутой на сервере"
description: "Настройка удаленного доступа к базе данных MySQL, развернутой на Linux-сервере. Документация и инструкции по использованию и настройке облачных серверов Timeweb Cloud."
---

# Удаленный доступ к MySQL

> Полный индекс документации для ИИ-агентов: [llms.txt](https://timeweb.cloud/llms.txt).

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

Если же требуется подключаться к MySQL извне, со сторонних адресов, необходимо выполнить следующее:

1.  Внести изменения в конфигурационный файл MySQL.
2.  Разрешить пользователю или пользователям MySQL удаленные подключения.

## Шаг 1. Редактирование конфигурационного файла

В Ubuntu файл размещается, как правило, по пути `/etc/mysql/mysql.conf.d/mysqld.cnf`.

В CentOS это могут быть `/etc/mysql/my.cnf` или `/etc/my.cnf`.

Откройте файл для редактирования, указав нужный путь:

```shell
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
```

Найдите в нем следующие строки:

```shell
# 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:

```shell
sudo systemctl restart mysql
```

## Шаг 2. Создание пользователя MySQL

Все пользователи MySQL, имеющие доступ только к локальным подключениям, имеют учетную запись вида `user@localhost`. Чтобы разрешить пользователю подключаться удаленно, нужно добавить для него учетную запись `user@нужный_IP` (или `user@%`, тогда будет возможно подключение с любого IP).

Эту настройку можно выполнить через консоль или через phpMyAdmin.

### **Через консоль**

Подключитесь к MySQL:

```shell
sudo mysql
```

С помощью команд ниже создайте пользователя и выдайте ему необходимые привилегии. В примере используется `ALL PRIVILEGES`, но в зависимости от ваших задач вы можете выдавать только отдельные права доступа (например, `CREATE`, `INSERT`, `UPDATE` и т.д.).

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

```shell
mysql> GRANT ALL PRIVILEGES ON имя_базы.* TO 'имя_пользователя'@'%' IDENTIFIED BY 'пароль';
```

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

```shell
mysql> GRANT ALL PRIVILEGES ON имя_базы.* TO 'имя_пользователя'@'123.45.67.8' IDENTIFIED BY 'пароль';
```

С помощью следующей команды можно разрешить пользователю подключение ко всем базам вместо одной конкретной:

```shell
mysql> GRANT ALL PRIVILEGES ON *.* TO 'имя_пользователя'@'123.45.67.8' IDENTIFIED BY 'пароль';
```

### **Через phpMyAdmin**

В phpMyAdmin перейдите в раздел «Учетные записи пользователей» → «Добавить новую учетную запись».

В пункте «Имя хоста» выберите «Любой хост» и укажите либо `%`, чтобы разрешить подключение с любого адреса, либо конкретный IP.

На следующем шаге задайте нужные привилегии для пользователя. Это может быть полный набор прав или с определенными ограничениями (например, вы можете запретить новой учетной записи удалять таблицы базы данных; таким образом удаление будет возможно только при локальном подключении).

## Ограничения файрвола

Удаленное подключение к MySQL может ограничиваться настройками файрвола. Например, на сервере с BitrixVM такое подключение вероятнее всего будет недоступно из-за ограничений iptables. Потребуется дополнительно внести изменения в правила — открыть порт 3306.

Можно открыть доступ к нему с любого адреса, но такая настройка является небезопасной. Рекомендуется разрешать доступ для конкретного IP.

В **iptables** это можно сделать командой:

```shell
sudo iptables -A INPUT -s 123.45.67.8 -p tcp --destination-port 3306 -j ACCEPT
```

Замените адрес из примера на нужный вам.

Если на сервере используется **UFW**, настройку можно выполнить с помощью:

```shell
sudo ufw allow from 123.45.67.8 to any port 3306
```

После завершения настройки проверьте, что пользователь может подключиться к MySQL удаленно. 

```shell
mysql -u имя_пользователя -h адрес_хоста_mysql -p
```
