Даем доступ к базе данных MySQL из вне

👁 127 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Часто, этот процесс сопровождается ошибкой запрета доступа извне типа на подобие:

host ‘myhost’ is not allowed to connect to this mysql server

или таким:

Can't Connect to MySQL Server on IPAddress (10061)

Для решения данной проблемы нужно сделать следующие шаги

Для начала, проверим настройки в файле /etc/mysql/mysql.conf.d/mysqld.cnf

port = 3306
#skip-networking (в смысле, закомментировано)
bind-address = IP_СЕРВЕРА_(НЕ_127.0.0.1)

Дальше, когда пытаемся присоединиться к базе, например, любой управлялкой базами (SQL Manager Lite как вариант — удобно, бесплатно, но на буржуйском наречии), получаем соообщение о том, что наш комп не может соединяться с мускул сервером…

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

Дело в том, что MySQL не только умеет ограничить доступ извне к самому серверу, но еще и определить пользователей для доступа удаленно к определенным базам или даже таблицам.

Сначала входим в консоль MySQL:

mysql -u <username> -p<password> <database_name>

Создаем пользователя test с полными правами для базы my_db с паролем superpass

GRANT ALL PRIVILEGES ON `my_db`.* TO test@'%' IDENTIFIED BY 'superpass'

Это создаст пользователя и даст ему права (GRANT) на соединение со всех хостов кроме localhost (127.0.0.1)!

А следующий запрос даст право читать таблицу my_table в базе my_db пользователю test с компьютера 192.168.0.10 с паролем superpass:

GRANT SELECT ON my_db.my_table TO test@192.168.0.10 IDENTIFIED BY 'superpass';

По умолчанию, режим безопасности подключения к MySQL находится под статусом MEDIUM , нам нужно перевести его в режим LOW командой MySQL

mysql> SET GLOBAL validate_password_policy=LOW;

Или это же можно сделать через конфигурационный файл, записав в  my.cnf строчку:

[mysqld]
validate_password_policy=LOW