1、mysql的權限是,從某處來的用戶對某對象的權限。

網站建設哪家好,找創(chuàng)新互聯(lián)!專注于網頁設計、網站建設、微信開發(fā)、微信小程序開發(fā)、集團企業(yè)網站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了雨山免費建站歡迎大家使用!
2、mysql的權限采用白名單策略,指定用戶能做什么,沒有指定的都不能做。
3、權限校驗分成兩個步驟:
a、能不能連接,檢查從哪里來,用戶名和密碼,常見錯誤 ERROR 1045 (28000): Access denied for user ...
b、能不能執(zhí)行操作,粒度從粗到細,分別為:mysql.user, mysql.db, msql.tables_priv, mysql.columns_priv, mysql.proc_priv。
需要注意的是,這些表各有分工,但是在權限分配上有一定的重合。
可以這樣理解,mysql 先檢查對大范圍是否有權限,如果沒有再到小范圍里去檢查。比如:先檢查對這個數(shù)據庫是否有select權限,如果有,就允許執(zhí)行。如果沒有,再檢查對表是否有select權限,一直到最細粒度,也沒有權限,就拒絕執(zhí)行。舉例來說:要檢查張三能否控制一個團,我只要先檢查張三能否控制一個軍,如果可以,就是有權限,如果不行,再檢查張三能否控制一個師。因此,粒度控制越細,權限校驗的步驟越多,性能越差,需要考慮。
4、mysql服務啟動之后,就會把權限有關的表的數(shù)據讀到內存中,對權限做的修改,是否會即時生效?要看情況,手動修改表數(shù)據,需要 flush privileges
5、創(chuàng)建用戶 create user,修改密碼 set password,注意 alter user只是設置密碼過期,可以登錄,但是不能執(zhí)行任何操作,必須從新設置密碼,刪除用戶 drop user
6、host+user 標示唯一的一個用戶,也就是說都叫張三,從不同地方來的張三是兩個用戶,他們有不同的權限。
7、那么問題來了,表中有兩條記錄:'root'@'192.168.1.101' 和 'root'@'%', 現(xiàn)在root來登錄,mysql 怎么匹配呢?認為是哪個root呢?
mysql 對用戶進行了排序,先對host排序,再對user排序,小范圍在前面,大范圍在后面,從上往下匹配。
8、權限授予,grant 權限 on 對象 to 用戶@哪里來 identified by 密碼
9、收回權限,revoke 權限 on 對象 from 用戶@哪里來,注意revoke 必須要與grant 對應,也就是說,只能收回授予的權限。
10、那么問題來了,我授予張三 select的權限,現(xiàn)在revoke all privileges 也不能收回張三select的權限,因為沒有對張三 grant all privileges,怎么解決這個問題?
使用 revoke all privileges,grant option from user
11、權限級別:從某臺主機來的某個用戶,對某個數(shù)據庫中某個表的某些列的某部分記錄,是否有權限。
12、全局:對象是mysql服務的所有數(shù)據庫,包含服務級的管理權限,比如showdown
13、數(shù)據庫:對象是某一個數(shù)據庫
14、表:對象是數(shù)據庫中某個表
15、列:對象是表中的某個列,比如:grant select (name) on xxx to xxx
16、程序:對象是存儲過程和方法。
17、information_scheme,數(shù)據庫和表是存放數(shù)據的,那么誰來存放 數(shù)據庫和表這些信息呢? information_scheme 就是記錄數(shù)據庫和表的,需要注意的是,infromation_scheme沒有對應的物理文件,它是mysql在內存中維護的。
18、權限設定原則:
a、盡量縮小權限
b、按業(yè)務,分離用戶,不同的業(yè)務對應不同的用戶
c、避免權限粒度太細,因為mysql權限檢查,會影響性能。
19、文件泄密,linux下mysql客戶端執(zhí)行的操作記錄在文件 ~/.mysql_history中,輸出重定向/dev/null
20、密碼丟失怎么辦?
a、mysql啟動,增加選項重置密碼
b、mysql啟動,增加選項不檢查權限,登陸后修改密碼,退出重啟啟動。
如果是把root授權了全網段的話,可以通過修改 mysql.user 里面的host 來修改. sql: update mysql.user set host="127.0.0.1" 這樣就只有本機能登陸了.
如果是某個賬戶有讀寫執(zhí)行的權限. 這個是可以通過重新授權來做限制的. 如果想刪除某個賬戶 可以刪除mysql.user里面的這個賬戶的 所有記錄.
不可以,你賦予什么權限,就收回什么權限,當然你收回的時候可以放大,但是不能縮小。。 比如你賦予了database.* 那么你收回的時候可以寫all。。。
你可以直接刪除wang用戶
進入mysql.user表,delete from user where user='wang'
當權限1,權限2
mysql grant 權限1,權限2,…權限n on 名稱.表名稱 to 用戶名@用戶地址 identified by ‘連接口令’;
權限1,權限2,…權限n代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14個權限。
當權限1,權限2,…權限n被all privileges或者all代替,表示賦予用戶全部權限。
當數(shù)據庫名稱.表名稱被*.*代替,表示賦予用戶操作服務器上所有數(shù)據庫所有表的權限。
用戶地址可以是localhost,也可以是ip地址、機器名字、域名。也可以用’%表示從任何地址連接。
‘連接口令’不能為空,否則創(chuàng)建失敗。
新聞名稱:mysql怎么把權限收回,mysql回收用戶所有權限
網頁URL:http://chinadenli.net/article25/dsggsji.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網站、軟件開發(fā)、定制開發(fā)、品牌網站設計、服務器托管、響應式網站
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)