Доступ к базе данных mysql с внешнего хоста / ip? (ie: MySQL workbench)
У меня есть сервер mysql, работающий на x.X. X. x, и может получить доступ к нему внутренне без проблем (конечно). Однако при попытке подключения извне, т. е. с помощью MySQL workbench, или даже с внешнего сервера, я получаю сообщение об ошибке "хост" bla.бла.смысл не разрешено подключаться к этому серверу MySQL".
Я сделал:
-
GRANT ALL PRIVILEGES ON *.* TO mysql@x.x.x.x IDENTIFIED BY "somepass";
- и я открыл порт 3306 в iptables.
есть ли еще одна фундаментальная безопасность проблема, которую я упускаю?
8 ответов
вам нужно
GRANT ALL PRIVILEGES ON *.* TO mysql@'bla.bla.bla' ...
часть после @
- это хост, с которого идет соединение, поэтому вы разрешили только соединения, идущие от localhost. Вам необходимо разрешить доступ с каждого удаленного хоста (или всех хостов -... mysql@'%' ...
- если применимо).
чтобы решить эту проблему вам необходимо выполнить следующие команды:
mysql -u root -p
[enter in your password]
CREATE USER 'mysqluser'@'%' IDENTIFIED BY 'aC0MPL3XPa33W0RD';
GRANT ALL PRIVILEGES ON *.* TO 'mysqluser'@'%' WITH GRANT OPTION;
У меня была точно такая же ситуация.мой MYSQL установлен на centOS. Путь к нирване, как показано ниже.
- bind-адрес: не работает
- разрешение grant: не работает
- Iptables при выключении: сделал работу.
решение: я пошел на рыбалку в iptables и сделал следующие изменения:
- доступ к iptables с помощью команды: vim/etc/sysconfig / iptables
-
Если вы найдете ниже операторы комментируют их, добавляя " # " в начале строки.
-вход-S 123.123.123.123/32-p tcp-m состояние --state NEW-m tcp --dport 3306-j ACCEPT
- вход-J отклонить --отклонить-с icmp-хост-запрещено
-выход-p tcp-m tcp --dport 3306-j ACCEPT
перезапустите iptables с помощью команды: Service iptables restart
Да, это сработало для меня. Надеюсь, это полезно кто-то.
когда я получил свой сервер, даже у меня была такая же проблема с доступом к mysql из клиентского приложения MySQL, Затем я предоставил разрешение Mysql со следующим запросом.
это сработало отлично
**GRANT ALL PRIVILEGES ON db_base.* TO db_user @'%' IDENTIFIED BY 'db_passwd';**
db_base is the database Name
db_user is database User
db_passwd is the database password
после того, как вы выполните эту промывку, выполните следующую команду
FLUSH PRIVILEGES;
предположим, если вы хотите дать права доступа к определенным таблицам в базе данных, вы можете использовать следующую команду
GRANT ALL PRIVILEGES ON db_base.HELLOWORLD TO db_user @'%' IDENTIFIED BY 'db_passwd';
здесь HELLOWORLD
- Это стол Имя
вы подключаетесь как пользователь mysql? Вы можете попробовать запустить запрос GRANT как:GRANT ALL PRIVILEGES ON *.* TO mysql@x.x.x.x IDENTIFIED BY "somepass";
вы проверили, что MySQL workbench пытается подключиться, используя соответствующее имя пользователя? Вы сброшены привилегии после выполнения команды grant?
Я не знаю входов и выходов безопасности за этим bind-address
вещь, просто учимся, устанавливая сервер debian на виртуальной машине.
У этого гостя есть виртуальная сетевая карта, настроенная как мост, поэтому остальная часть дома может ее видеть. Его IP-адрес 192.168.1.4.
С другого компьютера (192.168.1.3) не удалось подключиться с помощью bind-address = 127.0.0.1
.
Настроить bind-address = 192.168.1.4
работает нормально.
(свой адрес, буквально)
Она должна быть интерпретация 127.0.0.1 внутри виртуальной конфигурации, не уверен...
закомментировать строку:
bind-address = localhost
#bind-address = localhost < this is what it should look like.
в вашем MySQL мой.файл conf. Обычно он находится в /etc/mysql / my.conf.