Настя и сборник весёлых историй
Оглавление:
- Настройка MySQL Server
- Предоставление доступа пользователю с удаленного компьютера
- Настройка брандмауэра
- Iptables
- UFW
- FirewallD
- Проверка изменений
- Вывод
По умолчанию сервер MySQL прослушивает соединения только от localhost, что означает, что к нему могут обращаться только приложения, работающие на одном хосте.
Однако в некоторых ситуациях необходимо получить доступ к серверу MySQL из удаленного местоположения. Например, когда вы хотите подключиться к удаленному серверу MySQL из вашей локальной системы, или при использовании развертывания на нескольких серверах, когда приложение работает на компьютере, отличном от сервера базы данных. Одним из вариантов будет доступ к серверу MySQL через туннель SSH, а другим - настройка сервера MySQL для приема удаленных подключений.
В этом руководстве мы рассмотрим шаги, необходимые для разрешения удаленных подключений к серверу MySQL. То же самое относится и к MariaDB.
Настройка MySQL Server
Первый шаг - настроить сервер MySQL на прослушивание определенного IP-адреса или всех IP-адресов на компьютере.
Если сервер MySQL и клиенты могут взаимодействовать друг с другом через частную сеть, то лучшим вариантом будет настроить сервер MySQL на прослушивание только по частному IP. В противном случае, если вы хотите подключиться к серверу через общедоступную сеть, настройте сервер MySQL на прослушивание всех IP-адресов на компьютере.
Для этого вам нужно отредактировать файл конфигурации MySQL и добавить или изменить значение параметра
bind-address
. Вы можете установить один IP-адрес и IP-диапазоны. Если адрес
0.0.0.0
, сервер MySQL принимает соединения на всех интерфейсах IPv4 хоста. Если в вашей системе настроен IPv6, вместо
0.0.0.0
используйте
::
.
Расположение файла конфигурации MySQL зависит от дистрибутива. В Ubuntu и Debian файл находится по адресу
/etc/mysql/mysql.conf.d/mysqld.cnf
, в то время как в дистрибутивах на основе Red Hat, таких как CentOS, файл находится в
/etc/my.cnf
.
Откройте файл в текстовом редакторе:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Найдите строку, которая начинается с
bind-address
и установите в качестве значения IP-адрес, который должен прослушивать сервер MySQL.
По умолчанию установлено значение
127.0.0.1
(прослушивается только на локальном хосте).
В этом примере мы настроим сервер MySQL на прослушивание всех интерфейсов IPv4, изменив значение на
0.0.0.0
bind-address = 0.0.0.0 # skip-networking
Если есть строка, содержащая
skip-networking
, удалите ее или закомментируйте, добавив
#
в начале строки.
В MySQL 8.0 и выше директива
bind-address
может отсутствовать. В этом случае добавьте его под
раздел.
После этого перезапустите службу MySQL, чтобы изменения вступили в силу. Только root или пользователи с привилегиями sudo могут перезапускать сервисы.
Чтобы перезапустить службу MySQL в Debian или Ubuntu, введите:
sudo systemctl restart mysql
В дистрибутивах на основе RedHat, таких как CentOS, для перезапуска службы выполните:
Предоставление доступа пользователю с удаленного компьютера
Следующим шагом является предоставление доступа к базе данных удаленному пользователю.
Войдите на сервер MySQL от имени пользователя root, введя:
sudo mysql
mysql -uroot -p
Внутри оболочки MySQL используйте оператор
GRANT
для предоставления доступа удаленному пользователю.
GRANT ALL ON database_name.* TO user_name@'ip_address' IDENTIFIED BY 'user_password';
Где:
-
database_name
- это имя базы данных, к которой будет подключаться пользователь.user_name
- это имя пользователя MySQL. IP-адрес - это IP-адрес, с которого пользователь будет подключаться. Используйте%
чтобы разрешить пользователю подключаться с любого IP-адреса.user_password
- пароль пользователя.
Например, чтобы предоставить доступ к базе данных
dbname
пользователю с именем
foo
с паролем
my_passwd
с клиентского компьютера с IP
10.8.0.5
, вы должны выполнить:
GRANT ALL ON dbname.* TO foo@'10.8.0.5' IDENTIFIED BY 'my_passwd';
Настройка брандмауэра
Последний шаг - настройка брандмауэра для разрешения трафика через порт
3306
(порт MySQL по умолчанию) с удаленных компьютеров.
Iptables
sudo iptables -A INPUT -p tcp --destination-port 3306 -j ACCEPT
Разрешить доступ с определенного IP-адреса:
sudo iptables -A INPUT -s 10.8.0.5 -p tcp --destination-port 3306 -j ACCEPT
UFW
UFW - это инструмент брандмауэра по умолчанию в Ubuntu. Чтобы разрешить доступ с любого IP-адреса в Интернете (очень небезопасно), выполните:
sudo ufw allow 3306/tcp
Разрешить доступ с определенного IP-адреса:
sudo ufw allow from 10.8.0.5 to any port 3306
FirewallD
FirewallD является инструментом управления брандмауэром по умолчанию в CentOS. Чтобы разрешить доступ с любого IP-адреса в Интернете (очень небезопасно), введите:
sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp
sudo firewall-cmd --reload
Чтобы разрешить доступ с определенного IP-адреса на конкретном порту, вы можете создать новую зону FirewallD или использовать расширенное правило. Хорошо создайте новую зону с именем
mysqlzone
:
sudo firewall-cmd --new-zone=mysqlzone --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --permanent --zone=mysqlzone --add-source=10.8.0.5/32
sudo firewall-cmd --permanent --zone=mysqlzone --add-port=3306/tcp
sudo firewall-cmd --reload
Проверка изменений
Чтобы убедиться, что удаленный пользователь может подключиться к серверу MySQL, выполните следующую команду:
mysql -u user_name -h mysql_server_ip -p
Где
user_name
- это имя пользователя,
mysql_server_ip
вы предоставили доступ, а
mysql_server_ip
- это IP-адрес хоста, на котором работает сервер MySQL.
Если все настроено правильно, вы сможете войти на удаленный сервер MySQL.
ERROR 2003 (HY000): Can't connect to MySQL server on '10.8.0.5' (111)"
Приведенная ниже ошибка указывает на то, что пользователь, которому вы пытаетесь войти, не имеет прав доступа к удаленному серверу MySQL.
"ERROR 1130 (HY000): Host '10.8.0.5' is not allowed to connect to this MySQL server"
Вывод
MySQL, самый популярный сервер баз данных с открытым исходным кодом по умолчанию, прослушивает входящие соединения только на локальном хосте.
Чтобы разрешить удаленные подключения к серверу MySQL, вам необходимо выполнить следующие шаги:
- Настройте сервер MySQL для прослушивания всех или определенного интерфейса. Предоставьте доступ удаленному пользователю. Откройте порт MySQL в брандмауэре.
Как исправить ошибку подключения YouTube к серверу с ошибкой
Вот шаги по исправлению ошибки YouTube Android, которая говорит, что соединение с сервером потеряно, нажмите, чтобы повторить попытку.
Как исправить отсутствие подключения к интернету после подключения к VPN
Вы сталкиваетесь с проблемами с VPN для подключения к Интернету? Вы можете попробовать эти советы, чтобы исправить их.
Как сделать резервную копию и восстановить базы данных mysql с помощью mysqldump
В этом руководстве объясняется, как выполнять резервное копирование и восстановление баз данных MySQL или MariaDB из командной строки с помощью утилиты mysqldump. Файлы резервных копий, созданные утилитой mysqldump, представляют собой набор операторов SQL, которые можно использовать для воссоздания исходной базы данных.