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

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

我已经做好了:

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

是否还有另一个基本的安全问题,我失踪了?

Solutions Collecting From Web of "从外部主机/ IP访问一个MySQL数据库? (即:mysql工作台)"

你需要做的

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

@之后的部分是连接来自的主机,因此您只允许来自本地主机的连接。 您需要允许从每个远程主机访问必要(或所有主机 – ... 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上。 涅磐之路如下。

  1. 绑定地址:DID不工作
  2. 授予权限:没有工作
  3. Iptables关闭时:DID工作。

解决方案:我去钓鱼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

    -INPUT -J REJECT –reject-with icmp-host-prohibited

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

  3. 使用以下命令重新启动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@xxxx IDENTIFIED BY "somepass";

你有没有证实,MySQL的工作台正在尝试连接使用适当的用户名? 运行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工作正常。 (它自己的地址,litterally)它必须是虚拟配置内的127.0.0.1解释,不知道…

注释掉这行:

 bind-address = localhost #bind-address = localhost < this is what it should look like. 

在你的MySQL my.conf文件中。 它通常位于/etc/mysql/my.conf中。