Назад | Перейти на главную страницу

невозможно удаленно подключиться к mysql на сервере ubuntu

У меня есть сервер Apache2 ubuntu AWS EC2, на который я только что установил mysql.

Однако я не могу удаленно подключиться к базе данных через mysql workbench.

Мне интересно, какой шаг я пропустил, чтобы иметь возможность удаленного доступа к mysql через mysql workbench

Я получаю следующую ошибку: ОШИБКА 1045 (28000): доступ запрещен для пользователя root @ localhost (с использованием пароля: NO)

Хорошо, теперь я могу подключиться к ssh через ssh, но все еще не могу подключиться через свою рабочую среду mysql

В ssh после подключения к mysql я выполнил следующую команду, которая затем является учетными данными, которые я использую в своей рабочей среде mysql. Конечно, у меня настоящий пароль вместо ***** для пароля

CREATE USER 'mysqladmin'@'localhost' IDENTIFIED BY '******';

ПРЕДОСТАВЛЯЙТЕ ВСЕ ПРИВИЛЕГИИ . TO 'mysqladmin' @ 'localhost' С ОПЦИЕЙ GRANT;

В MySQL локальные и удаленные пользователи обрабатываются как отдельные учетные записи. Итак, помимо (для локального доступа):

CREATE USER 'mysqladmin'@'localhost' IDENTIFIED BY '******';

Также необходимо сделать (чтобы разрешить удаленный доступ из любого места):

CREATE USER 'mysqladmin'@'%' IDENTIFIED BY '******';

Или альтернативно (чтобы разрешить удаленный доступ только с определенного IP-адреса):

CREATE USER 'mysqladmin'@'TheIPAddress' IDENTIFIED BY '******';

Вам также потребуется предоставить разрешения этим дополнительным учетным записям пользователей.

Удачи!

Mysql примет удаленное соединение, если:

  1. учетные данные верны (имя пользователя + пароль + имя хоста) и;
  2. если mysql прослушивает IP-адрес, к которому вы подключаетесь.

Значит вам нужно заменить localhost на ваш ip или подстановочный знак %, например:

CREATE USER 'remote'@'1.2.3.4' IDENTIFIED BY 'xxxxxx';

Затем вам нужно указать mysql `` слушать '' общедоступный IP-адрес вашего сервера, открыв /etc/mysql/my.cnf и изменив строку с помощью bind-address=4.3.2.1. Убедитесь, что здесь используется общедоступный IP-адрес вашего сервера, а затем перезапустите mysql (локальные подключения к localhost или 127.0.0.1 остаются в рабочем состоянии).

И последнее, но не менее важное: я действительно советую реализовать какой-то брандмауэр, потому что ваш mysql подвержен атакам грубой силы удаленно, когда он привязан к общедоступному IP-адресу вашего сервера. Я лично использую iptables для этого:

iptables -A INPUT -p tcp --dport 3306 -s 1.2.3.4 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j DROP

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