9

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

我已经做好了:

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

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

4

8 回答 8

14

你需要做

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

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

于 2011-05-06T18:33:52.180 回答
9

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

mysql -u root -p
[enter in your password]
CREATE USER 'mysqluser'@'%' IDENTIFIED BY 'aC0MPL3XPa33W0RD';
GRANT ALL PRIVILEGES ON *.* TO 'mysqluser'@'%' WITH GRANT OPTION;
于 2012-07-17T09:49:58.177 回答
4

我的情况完全相同。我的 MYSQL 安装在 centOS 上。涅槃之路如下。

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

解决方案:我进入了 iptables 并进行了以下更改:

  1. 使用以下命令访问 iptables:vim /etc/sysconfig/iptables
  2. 如果您发现以下语句,请在行首添加“#”将它们注释掉。

    -A 输入 -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 输出 -p tcp -m tcp --dport 3306 -j 接受

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

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

于 2014-03-25T14:36:30.813 回答
3

When I Got my server,even I had the same problem accessing the mysql from MySQL client application, Then I granted the Mysql permission, with following query.

it worked Great

**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 

Once you execute this flush it, by the following command FLUSH PRIVILEGES;

Suppose if you are looking to give privileges to access certain tables in the Database you can use the following command

GRANT ALL PRIVILEGES ON db_base.HELLOWORLD TO db_user @'%' IDENTIFIED BY 'db_passwd';

Where HELLOWORLD is the table Name

于 2011-05-06T18:41:08.767 回答
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工作正常。(它自己的地址,乱七八糟)它必须是虚拟配置中 127.0.0.1 的解释,不确定......

于 2013-05-18T21:57:12.673 回答
0

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

于 2011-05-06T18:30:34.433 回答
0

您是否已验证 mysql 工作台正在尝试使用适当的用户名进行连接?运行 grant 命令后是否刷新了权限?

于 2011-05-06T18:32:44.783 回答
-2

注释掉这一行:

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

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

于 2011-05-06T18:31:03.193 回答