欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

无法连接远程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
将其注释掉之后,连接成功!


希望能给大家节省点时间