mysql權限機制:包含兩個階段
第一階段:服務器檢查是否允許連接數據庫。
第二階段:假如可以連接,再檢查是否有足夠的權限來操作數據庫中的表。
連接mysql服務器的一個示例:ip(主機名),端口,用戶名,密碼
shell>mysql -hhost_ip_address -uusername -pyour_password -Pserver_port;
遇到了 SQLException: access denied for @'localhost' (using password: no)
解決辦法:grant all privileges on *.* to joe@'localhost' identified by '1';
flush privileges;
拿 joe 1 登陸ee
賦予權限和回收權限: (最后記得刷新權限)
mysql> grant 權限1,權限2,…權限n on 數據庫名稱.表名稱 to 用戶名@用戶地址 identified by ‘連接口令’;
當權限1,權限2,…權限n被all privileges或者all代替,表示賦予用戶全部權限。
當數據庫名稱.表名稱被*.*代替,表示賦予用戶操作服務器上所有數據庫所有表的權限。
用戶地址可以是localhost,也可以是ip地址、機器名字、域名。也可以用’%'表示從任何地址連接。
‘連接口令’不能為空,否則創建失敗。
例如:
給來自10.163.225.87的用戶joe分配可對數據庫vtdc的employee表進行select,insert,update,delete,create,drop等操作的權限,並設定口令為123
mysql>grant select , insert, update, create, drop on vtdc.employee to joe@'10.163.255.87' identified by '123';
mysql> flush privileges;
給來自10.163.225.87的用戶joe分配可對數據庫vtdc所有表進行所有操作的權限,並設定口令為123
mysql>grant all privileges on vtdc.* to joe@'10.163.255.87' identified by '123';
mysql>flush privileges;
給來自10.163.225.87的用戶joe分配可對所有數據庫的所有表進行所有操作的權限,並設定口令為123。
mysql>grant all privileges on *.* to joe@'10.163.255.87' identified by '123';
mysql>flush privileges;
回收權限:
mysql>revoke select, insert, update, delete on db_name.* from user_name@'10.%';
mysql>flush privileges;