以前架 MySQL 服務器都是在本機上,沒有考慮過用戶授權的問題,直接使用 root 用戶進行連接數據庫。後來開發組內部共同使用一個 MySQL 數據庫,問題出現了,每次都是數據庫連接無法獲得。非常奇怪,而且用戶名和密碼都是對的。
於是查找 MySQL 開發手冊,對這個的解釋是:root 用戶僅能從本機訪問。
查詢一下用戶表:
select host, user from mysql.user where user='root';
+-----------+------+
| host | user |
+-----------+------+
| localhost | root |
+-----------+------+
1 row in set (0.00 sec)
發現問題的原因之後,新建一個用戶並授予訪問權限。
grant all privileges on test.* to newuser@'%'
identified by security;
flush privileges;
授予 test 數據庫的 所有表 的 所有訪問權限 給 從任意客戶端 登錄的 newuser 用戶。
查詢一下用戶表:
select host, user from mysql.user where user='newuser';
+-----------+---------+
| host | user |
+-----------+---------+
| % | newuser |
+-----------+---------+
1 row in set (0.00 sec)
對於 Windows 操作系統還需要 關閉防火牆 或者 將 MySQL 放到 防火牆 的例外列表中去纔可以。
現在,從任意客戶端都可以使用 newuser 用戶名進行訪問了。