標籤:mysql 使用者授權
一、使用者授權
1、注意事項:
- MySQL資料庫伺服器搭建好之後,放在獨立的房間裡或者是IDC機房,MySQL資料庫服務預設只允許資料庫管理員root在本地登入,要在其他用戶端登入管理資料庫則需要授權才可以。
- 程式員(網站運行資料)編程使用資料庫都是在用戶端,需要授權。
- 預設只有資料庫管理員在資料庫伺服器本機登入才有授權許可權
2、授權庫mysql,主要的幾個表:
- user表:記錄使用者的資訊
host:用戶端 user:授權使用者名password:授權使用者密碼 *_priv:許可權
- db表:記錄授權使用者對庫的授權資訊
//工作中刪除test及表的完全許可權記錄(delete from mysql.db where user=“”;)
Host:用戶端 Db:庫名 user:使用者名稱 *_priv:許可權
- tables_priv表:記錄授權使用者對錶的授權資訊
有對錶的授權的時候才會有記錄
Host db user table_name grantor timestamp table_priv column_priv
- columns_priv表:記錄授權使用者對欄位的授權資訊
有對欄位的授權才會記錄(grant select,update(name,sex) on studb.usertab tolucy;)
3、授權命令:
格式:mysql>grant 許可權列表 on 資料庫名.表名 to 使用者名稱@; //網路中所有主機可用該使用者登入,無需密碼
mysql>grant 許可權列表 on 資料庫名.表名to 使用者名稱@“用戶端地址”;//只允許一台用戶端用該使用者名稱登入,無需密碼
mysql>grant 許可權列表 on 資料庫名.表名to 使用者名稱@“用戶端地址” identified by “密碼”;//只允許一台用戶端用該使用者名稱登入,要求輸入密碼
mysql>grant 許可權列表 on 資料庫名.表名to 使用者名稱@“用戶端地址” identified by “密碼” withgrant option;//只允許一台用戶端用該使用者名稱登入,要求輸入密碼,該使用者有給其他使用者授權的許可權
1)許可權列表:使用者串連後對資料庫有什麼樣的操作許可權
- all:對指定的庫擁有全部許可權
- select:只有查看指定庫的許可權
- insert:只有在指定庫的插入記錄許可權
- update:updtae(欄位1,欄位2.......)更新許可權,對某表某欄位的更改許可權
- delete:
- USAGE:對庫和表沒有任何許可權,使用者只能登入
- 多個許可權逗號,分隔:select,insert...
(許可權‘Select‘,‘Insert‘,‘Update‘,‘Delete‘,‘Create‘,‘Drop‘,‘Grant‘,‘References‘,‘Index‘,‘Alter‘,‘CreateView‘,‘Show view‘,‘Trigger‘ )
2)資料庫名:
- *.*:所有庫
- 資料名.*:某個庫中所有表有許可權
- 資料庫名.表名:某個庫的某個表有許可權
3)使用者名稱:授權時自訂,要有標識性,儲存在mysql.user表裡
4)用戶端地址:
- @“%”或不設定:代表網路中所有主機
- @“192.168.1.%”:該網段的所有主機
- @“ip地址”:只允許在該ip地址的主機登入
- @“主機名稱”:保證該主機名稱可以被解析 如:@”pc1.tarena.com” //不常用
[email protected]”%.tarena.com”:允許tarena.com地區所有主機登入保證可被解析 //不常用
5)identified by “密碼”:可選項,授權使用者登入時使用的密碼,自訂
6)with grant option :可選項,讓授權使用者有授權許可權
樣本:mysql>grant select on bbsdb.usertab to [email protected]“192.168.4.1” identifiedby “123” with grant option;
mysql>grant all on *.* to [email protected]“192.168.4.205” identified by“123” with grant option; //授權資料庫管理員root可以在192.168.4.205上登入資料庫
4、登入使用者查看自己的許可權:mysql>show grants;
資料庫管理員查看授權使用者的許可權資訊:mysql>show grants [email protected];
查看授權使用者有哪些:mysql>select user,host from mysql.user;
5、查看當前登入使用者是誰:mysql>select user();
6、授權資訊儲存在資料庫伺服器中的mysql庫中的表裡
7、伺服器端和用戶端關閉防火牆和SELinux(disable)
用戶端登入:#mysql -h資料庫伺服器IP -u授權使用者名 -p密碼
8、授權許可權:
a) 授權許可權需對mysql庫有全部許可權
b) 授權許可權只能把自己所擁有的許可權給別人(授自己有許可權的庫/表)
c) 如:給開發部經理授權許可權,他給部門程式員授權
Grant all on webdb.*to [email protected]”%” identified by “123” with grant option;
Grant all on mysql.*to [email protected]“%” identified by “123”;
9、授權使用者修改自己的登入密碼
Set password=password(“新密碼”);
10、管理員可重設使用者的密碼
Set password for 使用者名稱@“用戶端地址”=password(“新密碼”);
二、撤銷使用者權限
1、對目標庫/表有過授權才能撤銷成功
2、有授權許可權的使用者在用戶端登入也可以執行撤銷許可權
3、撤銷命令:
格式:revoke 許可權列表 on 資料庫名(.表名) from 使用者名稱@“用戶端地址”;
資料庫名(.表名):這個位置要有過授權
樣本:revoke delet on *.* from [email protected]“192.168.4.205”;
revoke all on *.* from [email protected]“192.168.4.205”; //撤銷的是許可權,使用者仍能登入,all是對庫和表的操縱許可權不包括授權許可權
revoke grant option on *.* from [email protected]“192.168.4.205”;//撤銷授權許可權
revoke撤銷的是許可權,不會刪除授權使用者資訊(仍儲存在mysql.user表裡),仍能登入4、要徹底刪除授權使用者,則刪除mysql.user表裡該授權使用者的記錄:
delete from mysql.user where user=“使用者名稱”;
本文出自 “IT技術學習” 部落格,請務必保留此出處http://learningit.blog.51cto.com/9666723/1788317
MySQL資料庫使用者授權管理