У меня есть сервер 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 примет удаленное соединение, если:
Значит вам нужно заменить 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.