【MySql】許可權不足導致的無法連線到資料庫以及許可權的授予和撤銷
【環境引數】
【障礙再現】
Host is not allowed to connect to this MySql Server
1、Host OS:Win7 64bit
2、Host IP:192.168.10.1
3、VM: VMware 11.1.0
4、Client OS:CentOS 6
5、Client IP:192.168.10.129
6、MySql版本: 5.1.73
【障礙再現】
Host is not allowed to connect to this MySql Server
當“初次”在CentOS系統上(安裝在虛擬機器中)安裝並且簡單配置完MySql伺服器之後,想要在本地訪問虛擬機器上的MySql資料庫,當在本地輸入mysql登陸命令後,出現如下圖所示錯誤。
簡而言之,即Host(192.168.10.1)不允許連線MySql資料庫。
【障礙原因】
Host端的許可權不足。
在MySql資料庫伺服器端的mysql資料庫中,有一個user表,該表中就記錄了可以登入MySql伺服器的帳號相關資訊,如下圖所示。
【解決方案02:授權法】
【擴充:撤銷使用者許可權】
此時,user表中的host欄位僅僅有“localhost”這一條記錄,則說明了MySql伺服器僅僅允許從“localhost(此處的localhost指的是虛擬機器)”登入到資料庫。
因此,若想允許其他非localhost的使用者訪問,就要修改host欄位的數值。
【解決方案01:改表法】
注意,修改完之後,要記得“重新整理許可權”,否則,Host端依然無法連線到MySql上。【解決方案01:改表法】
將user表中host欄位中的資料修改為“%”
【解決方案02:授權法】
以下幾個示例可以作為有價值的參考:(自己經過測試,可以起效)
(1) 如果想要讓資料庫使用者myDbUser01,使用密碼myPassword,從"任何主機"連線到mysql伺服器的話,可以使用如下命令:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'myDbUser01'@'%' IDENTIFIED BY 'myPassword' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
(2) 如果想要讓資料庫使用者myDbUser01,使用密碼myPassword,從"ip為192.168.10.1的主機"連線到mysql伺服器,可以使用如下命令:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'myDbUser01'@'192.168.10.1' IDENTIFIED BY 'myPassword' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
(3) 如果想要讓資料庫使用者myDbUser01,使用密碼myPassword,從ip為192.168.10.1的主機連線到mysql伺服器的"dk資料庫",可以使用如下命令:
mysql> GRANT ALL PRIVILEGES ON dk.* TO 'myDbUser01'@'192.168.10.1' IDENTIFIED BY 'myPassword' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
【擴充:撤銷使用者許可權】
命令: REVOKE privilege ON databasename.tablename FROM 'username'@'host';
說明: privilege, databasename, tablename - 同授權部分.
例子: REVOKE SELECT ON *.* FROM 'pig'@'%';
注意:
REVOKE語句只能取消使用者的許可權,而不可以刪除使用者。即使取消了所有的許可權,使用者仍然可以連線到伺服器。
要想徹底的刪除使用者,必須使用DELETE語句將該使用者的記錄從MySQL資料庫中的user表中刪除。該語句的語法格式如下:
Delete from user where user = "user_name" and host = "host_name" ;
使用DELETE刪除使用者sss,程式碼如下:
mysql> use mysql
Database changed
mysql> delete from user where user='sss' and host='localhost' ;
mysql>flush privileges ;
Query OK, 1 row affected (0.02 sec)
其中,delete用於刪除使用者,flush告訴伺服器重新載入授權表。
說明: privilege, databasename, tablename - 同授權部分.
例子: REVOKE SELECT ON *.* FROM 'pig'@'%';
注意:
REVOKE語句只能取消使用者的許可權,而不可以刪除使用者。即使取消了所有的許可權,使用者仍然可以連線到伺服器。
要想徹底的刪除使用者,必須使用DELETE語句將該使用者的記錄從MySQL資料庫中的user表中刪除。該語句的語法格式如下:
Delete from user where user = "user_name" and host = "host_name" ;
使用DELETE刪除使用者sss,程式碼如下:
mysql> use mysql
Database changed
mysql> delete from user where user='sss' and host='localhost' ;
mysql>flush privileges ;
Query OK, 1 row affected (0.02 sec)
其中,delete用於刪除使用者,flush告訴伺服器重新載入授權表。
讀者如要轉載,請標明出處和作者名,謝謝。
地址01:http://space.itpub.net/25851087
地址02:http://www.cnblogs.com/zjrodger
作者名:zjrodger
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29734436/viewspace-1710650/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 基礎知識6——授予和撤銷許可權
- mysql連線無許可權MySql
- 1.7.6. 授權和撤銷管理許可權
- [資料庫]MYSQL之授予/查驗binlog許可權資料庫MySql
- unlimited tablespace許可權的授予和回收MIT
- 塗抹MySQL--第5章 MySQL資料庫中的許可權體系 - 5.2許可權授予與回收(3)MySql資料庫
- 塗抹MySQL--第5章 MySQL資料庫中的許可權體系 - 5.2許可權授予與回收(2)MySql資料庫
- 塗抹MySQL--第5章 MySQL資料庫中的許可權體系 - 5.2許可權授予與回收(1)MySql資料庫
- 【LIUNX】目錄或檔案許可權,許可權授予
- 許可權授予、回收命令
- MySQL資料庫許可權體系入門(5)---管理資料庫許可權MySql資料庫
- chomd檔案許可權授予
- 資料庫的許可權管理資料庫
- Mysql資料庫許可權問題MySql資料庫
- 【詳解】GrantedAuthority(已授予的許可權)
- MySQL資料庫許可權體系入門(4)---管理全域性許可權MySql資料庫
- 許可權系統:一文搞懂功能許可權、資料許可權
- Oracle的物件許可權、角色許可權、系統許可權Oracle物件
- mysql 修改使用者許可權,允許遠端連線資料庫MySql資料庫
- 【自然框架】許可權的視訊演示(二):許可權到欄位、許可權到記錄框架
- 11gRAC許可權問題導致的叢集及資料庫無法啟動資料庫
- mysql許可權MySql
- MySQL 許可權MySql
- Mysql許可權管理以及sql資料備份MySql
- MySQL資料庫許可權體系入門(3)---管理使用者許可權MySql資料庫
- 資料許可權
- linux 檔案許可權 s 許可權和 t 許可權解析Linux
- 使用者有connect,resource,dba角色許可權後回收dba許可權導致無UNLIMITED TABLESPACE許可權造成業務中斷MIT
- 【專案實踐】一文帶你搞定頁面許可權、按鈕許可權以及資料許可權
- MySQL資料庫Root許可權MOF方法提權研究MySql資料庫
- AIX 的許可許可權(轉)AI
- MySQL之test資料庫預設許可權MySql資料庫
- Mysql——許可權管理MySql
- Mysql 許可權管理MySql
- MySQL許可權管理MySql
- Oracle資料庫的系統和物件許可權Oracle資料庫物件
- 許可權之選單許可權
- Android系統許可權和root許可權Android