我有一个在x.x.x.x上运行的mysql服务器,并且可以在内部访问它没问题(当然)。但是,当尝试连接外部,即使用mysql工作台,甚至从外部服务器,我得到错误消息“主机'bla.bla.bla'不允许连接到这个MySQL服务器”。
我做了:
GRANT ALL PRIVILEGES ON *.* TO mysql@x.x.x.x IDENTIFIED BY "somepass";
我还缺少另一个基本的安全问题吗?
答案 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的路径如下。
解决方案:我去了iptables并进行了以下更改:
如果您发现以下陈述,请添加'#'在行的开头。
-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
使用以下命令重新启动iptables:service iptables restart
答案 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。