無法連接遠程MySQL數據庫的解決方案

今天配置服務器的數據庫,之前有印象,所以直接就是按照下面的方法,在服務器上添加了一個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
將其註釋掉之後,連接成功!


希望能給大家節省點時間

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章