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