从外部主机/ IP访问mysql数据库? (即:mysql工作台)

时间:2011-05-06 18:27:19

标签: mysql linux centos iptables mysql-workbench

我有一个在x.x.x.x上运行的mysql服务器,并且可以在内部访问它没问题(当然)。但是,当尝试连接外部,即使用mysql工作台,甚至从外部服务器,我得到错误消息“主机'bla.bla.bla'不允许连接到这个MySQL服务器”。

我做了:

  • GRANT ALL PRIVILEGES ON *.* TO mysql@x.x.x.x IDENTIFIED BY "somepass";
  • 我在iptables打开了端口3306。

我还缺少另一个基本的安全问题吗?

8 个答案:

答案 0 :(得分:14)

你需要做

GRANT ALL PRIVILEGES ON *.* TO mysql@'bla.bla.bla' ...

@之后的部分是连接来自的主机,因此您只允许来自localhost的连接。您需要允许每个远程主机(或所有主机 - ... mysql@'%' ... - 如果适用)允许访问。

答案 1 :(得分:8)

要解决此问题,您需要执行以下命令:

mysql -u root -p
[enter in your password]
CREATE USER 'mysqluser'@'%' IDENTIFIED BY 'aC0MPL3XPa33W0RD';
GRANT ALL PRIVILEGES ON *.* TO 'mysqluser'@'%' WITH GRANT OPTION;

答案 2 :(得分:4)

我有完全相似的情况。我的MYSQL安装在centOS上。 Nirvana的路径如下。

  1. bind-address:DID NOT WORK
  2. 授予权限:DID NOT WORK
  3. 关闭时的Iptables:DID工作。
  4. 解决方案:我去了iptables并进行了以下更改:

    1. 使用以下命令访问iptables:vim / etc / sysconfig / iptables
    2. 如果您发现以下陈述,请添加'#'在行的开头。

      -A INPUT -s 123.123.123.123/32 -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT

      -A INPUT -j REJECT --reject-with icmp-host-prohibited

      -A OUTPUT -p tcp -m tcp --dport 3306 -j ACCEPT

    3. 使用以下命令重新启动iptables:service iptables restart

    4. 是的,这对我有用。希望它对某人有用。

答案 3 :(得分:3)

当我有我的服务器时,即使我从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是表名

答案 4 :(得分:0)

您是以用户mysql身份连接的吗?您可以尝试将GRANT查询作为:GRANT ALL PRIVILEGES ON *.* TO mysql@x.x.x.x IDENTIFIED BY "somepass";

运行

答案 5 :(得分:0)

您是否已验证mysql工作台是否正在使用相应的用户名尝试连接?运行grant命令后你有flushed the privileges吗?

答案 6 :(得分:0)

我不知道这个bind-address背后的安全问题,只是通过在虚拟机器上安装debian服务器来学习。 这个客人有一个虚拟网卡设置为桥梁,所以房子的其余部分可以看到它。其IP为192.168.1.4。 从另一台计算机(192.168.1.3),连接失败,bind-address = 127.0.0.1。 设置bind-address = 192.168.1.4工作正常。 (它自己的地址,litterally) 它必须是虚拟配置中127.0.0.1的解释,不确定......

答案 7 :(得分:-2)

注释掉这一行:

bind-address = localhost
#bind-address = localhost < this is what it should look like.
你的MySQL my.cnf文件中的

。它通常位于/etc/mysql/my.conf。