Как разрешить удаленные подключения к серверу базы данных MySQL

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
Ответить
Как разрешить удаленные подключения к серверу базы данных MySQL
Не работает подключение к серверу MySQL, не удается подключиться.
Очень важно какую вы ошибку точно видите:
1. ERROR 2003 (HY000): Can't connect to MySQL server on 'X.X.X.X'"
- либо порт 3306 не открыт, либо сервер MySQL не прослушивает IP-адрес.
1.1. Проверяем слушает ли MySQL 3306
netstat -nat | grep :3306
если такой ответ:
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN
То необходимо сюда /etc/my.cnf
[mysqld]
bind-address    = 0.0.0.0
# skip-networking
systemctl restart mysql

Должно быть так:
tcp6       0      0 :::3306                 :::*                    LISTEN

1.2 фаервол блокирует:
Iptables
Если вы используете iptables в качестве брандмауэра, команда ниже разрешит доступ с любого IP-адреса в Интернете к порту MySQL. Это очень небезопасно.

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

2. "ERROR 1130 (HY000): Host ‘XXX.XX.XX.XX’ is not allowed to connect to this MySQL server"
пользователь, которому вы пытаетесь войти, не имеет прав доступа к удаленному серверу MySQL.

Решение создать дополнительного администратора для внешнего подключения:
1. mysql -u root -p
2.  CREATE USER 'remroot'@'%' IDENTIFIED BY 'some_pass';
   GRANT ALL PRIVILEGES ON *.* TO 'remroot'@'%' WITH GRANT OPTION;
Цитата

If you cannot figure out why you get Access denied, remove from the user table all entries that have Host values containing wildcards (entries that contain '%' or '_' characters). A very common error is to insert a new entry with Host='%' and User='some_user', thinking that this allows you to specify localhost to connect from the same machine. The reason that this does not work is that the default privileges include an entry with Host='localhost' and User=''. Because that entry has a Host value 'localhost' that is more specific than '%', it is used in preference to the new entry when connecting from localhost! The correct procedure is to insert a second entry with Host='localhost' and User='some_user', or to delete the entry with Host='localhost' and User=''. After deleting the entry, remember to issue a FLUSH PRIVILEGES statement to reload the grant tables. See also Section 5.4.4, “Access Control, Stage 1: Connection Verification”.

Также есть вариант обновить текущие привелегии, екущего пользователя:
1. mysql -uroot -p
Внутри оболочки MySQL используйте GRANTоператор для предоставления доступа удаленному пользователю.
2. GRANT ALL ON database_name.* TO user_name@'ip_address' IDENTIFIED BY 'user_password';
Где:

database_name – Имя базы данных, к которой будет подключаться пользователь.
user_name – это имя пользователя MySQL.
ip_address – это IP – адрес , с которого пользователь будет подключаться. Используйте, %чтобы позволить пользователю подключаться с любого IP-адреса.
user_password – это пароль пользователя.
Например, чтобы предоставить доступ к базе данных dbname пользователю с именем andreyex с паролем my_passwd с клиентского компьютера с IP 10.8.0.5, вы должны выполнить:

3. GRANT ALL ON dbname.* TO andreyex@'IPXX.x.x.XX' IDENTIFIE
Услуги Системного Администратора - Работаю только с Юр. Лицами по договору обслуживания.
Страницы: 1
Ответить
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)
Форма ответов
 
Текст сообщения*
:) ;) :D 8-) :( :| :cry: :evil: :o :oops: :{} :?: :!: :idea:
Защита от автоматических сообщений. Введите символы, изображенные на этой картинке в поле ввода &quote;Код подтверждения&quote;.