无法连接远程MySQL数据库的解决方案

原创
2016-06-07 15:34:12 813浏览

今天配置服务器的数据库,之前有印象,所以直接就是按照下面的方法,在服务器上添加了一个user用于远程连接。 -- 查看usermysql use mysql;mysql select host,user,password from user;-- 创建新usermysql create user username identified by userpwd;# 或m

今天配置服务器的数据库,之前有印象,所以直接就是按照下面的方法,在服务器上添加了一个user用于远程连接。

-- 查看user
mysql> use mysql;
mysql> select host,user,password from user;

-- 创建新user
mysql> create user 'username' identified by 'userpwd';
# 或
mysql> grant all privileges on *.* to 'username'@'xxx.xxx.xxx.xxx' identified by 'userpwd'; -- 如果任何IP可连接,则@'%'

-- 修改用户名
mysql> rename user 'oldname' to 'newname';-- mysql5之前需要使用update更新user表

-- 删除user
mysql> drop user newuser;   -- mysql5之前删除用户时必须先使用revoke 删除用户权限,然后删除用户,mysql5之后drop 命令可以删除用户的同时删除用户的相关权限

-- 更改密码
mysql> update mysql.user set password=password('xxxx') where user='username';

-- 查看用户权限
mysql> show grants for 'username';
-- 赋予权限
mysql> grant select on dbname.*  to 'username';
-- 回收权限
mysql> revoke select on dbname.* from 'username';

-- 刷新生效
mysql> flush privileges;

按照以上创建user的方式,查看用户表,有相应的记录后,一般是没有问题了。但是我在客户机还是无法连接。

排除了以下可能的问题:

1、防火墙禁止了3306端口访问。不过大多数Linux的防火墙默认的是不活跃的。像我这里的Ubuntu的ufw,‘ufw status’显示的是‘inactive’。

2、端口不是3306。查看配置文件my.cnf,端口的确是3306,。


后来网上找到了这篇博客http://www.2cto.com/database/201204/127400.html,博主列出了很多可能的问题,其中提到了my.cnf配置文件中bind_address项,我看了该项的注释,果然是它的问题。

[mysqld]
# instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure
bind-address    = 127.0.0.1
将其注释掉之后,连接成功!


希望能给大家节省点时间

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。