ERROR 2003(HY000):无法连接到'hostname'上的MySQL服务器(111)

时间:2013-08-06 14:29:53

标签: mysql networking centos

提前感谢您的帮助。

我正面临着mysql服务器的问题,这是本主题的标题,使用命令:

mysql -u myuser -pmypass -h `hostname`  db_name

我收到错误

ERROR 2003 (HY000): Can't connect to MySQL server on 'hostname' (111)

所以我检查了 my.cnf 文件并且我没有使用“绑定地址”和“跳过网络”的行,尽管我尝试添加它们并重新启动但没有改变任何内容。

除此之外,sql日志中没有错误,我们可以(使用HeidiSQL)远程连接到服务器,因为用户是myuser"@"%。 Mysql侦听端口3306,所以没关系

此外,使用@'localhost'创建的用户可以正常使用命令行(不带-h选项)。

更有趣的是,看起来完全相同的其他服务器在第一个命令本地和远程工作......

服务器使用CentOS 6.2运行

所以,如果有人对此事有所了解,我会很高兴听到它

P.S:这是我第一次在这里发帖,所以如果有格式问题,请原谅我

4 个答案:

答案 0 :(得分:7)

只需检查您的my.cnf并从

更改
bind-address = 0.0.0.0

bind-address = 127.0.0.1

如果您没有该参数,只需添加它。

绑定到0.0.0.0让你的mysql在每个配置的IP上都可用,因为你不能只在服务器上的两个或三个IP上绑定,配置可以是:localhost或者所有。

然后检查/ etc / hosts文件并确保该行

127.0.0.1 localhost

还包含您的服务器主机名,例如:我的主机名是“db01”,我的/ etc / hosts是

127.0.0.1 localhost db01

请记住,在安装过程中通过yum(我不知道CentOS是否为您自动执行此操作,我只知道Gentoo没有)您必须执行mysql_install_db然后为root用户配置密码,绝对确定你设置了密码:

'root'@'localhost'
'root'@'hostname'
'root'@'127.0.0.1'
'root'@'%'

(安全问题也一定要从mysql.user中删除那些带有user =''的条目)

希望这会有所帮助

答案 1 :(得分:4)

迟来的响应,但我认为错误消息意味着您尝试连接的服务器没有在该接口上侦听。

如果您将配置更改为:

bind-address = 127.0.0.1

如上所述,您正在做的是配置服务器以拒绝除localhost(本身)之外的所有连接。

bind-address = 0.0.0.0

在大多数情况下是足够的,并使mysql监听系统上的所有接口,这使得它可以通过主机可访问的所有地址访问。

答案 2 :(得分:0)

在防火墙上启用端口并尝试...

在终端, 执行命令为root

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

答案 3 :(得分:-2)

我遇到了MySQL服务器与本地网络中其他服务器的 IP地址冲突的原因。