无法连接远程MySQL数据库的解决方案
程序员文章站
2024-02-11 15:09:05
...
今天配置服务器的数据库,之前有印象,所以直接就是按照下面的方法,在服务器上添加了一个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将其注释掉之后,连接成功!
希望能给大家节省点时间