mysql 許可權控制

2021-09-08 14:20:34 字數 1894 閱讀 3038

1、mysql的許可權是,從某處來的使用者對某物件的許可權。

2、mysql的許可權採用白名單策略,指定使用者能做什麼,沒有指定的都不能做。

3、許可權校驗分成兩個步驟:

a、能不能連線,檢查從**來,使用者名稱和密碼,常見錯誤 error 1045 (28000): access denied for user ...

b、能不能執行操作,粒度從粗到細,分別為:mysql.user,  mysql.db,  msql.tables_priv,  mysql.columns_priv,  mysql.proc_priv。需要注意的是,這些表各有分工,但是在許可權分配上有一定的重合。可以這樣理解,mysql 先檢查對大範圍是否有許可權,如果沒有再到小範圍裡去檢查。比如:先檢查對這個資料庫是否有select許可權,如果有,就允許執行。如果沒有,再檢查對錶是否有select許可權,一直到最細粒度,也沒有許可權,就拒絕執行。舉例來說:要檢查張三能否控制乙個團,我只要先檢查張三能否控制乙個軍,如果可以,就是有許可權,如果不行,再檢查張三能否控制乙個師。。。。因此,粒度控制越細,許可權校驗的步驟越多,效能越差,需要考慮。

4、mysql服務啟動之後,就會把許可權有關的表的資料讀到記憶體中,對許可權做的修改,是否會即時生效?要看情況,手動修改表資料,需要 flush privileges

5、建立使用者 create user,修改密碼 set password,注意 alter user只是設定密碼過期,可以登入,但是不能執行任何操作,必須從新設定密碼,刪除使用者 drop user

6、host+user 標示唯一的乙個使用者,也就是說都叫張三,從不同地方來的張三是兩個使用者,他們有不同的許可權。

7、那麼問題來了,表中有兩條記錄:'root'@'192.168.1.101' 和 'root'@'%', 現在root來登入,mysql 怎麼匹配呢?認為是哪個root呢?

mysql 對使用者進行了排序,先對host排序,再對user排序,小範圍在前面,大範圍在後面,從上往下匹配。

8、許可權授予,grant 許可權 on 物件 to 使用者@**來 identified by 密碼

9、收回許可權,revoke 許可權 on 物件 from 使用者@**來,注意revoke 必須要與grant 對應,也就是說,只能收回授予的許可權。

10、那麼問題來了,我授予張三 select的許可權,現在revoke all privileges 也不能收回張三select的許可權,因為沒有對張三 grant all privileges,怎麼解決這個問題?

使用 revoke all privileges,grant option from user

11、許可權級別:從某台主機來的某個使用者,對某個資料庫中某個表的某些列的某部分記錄,是否有許可權。

12、全域性:物件是mysql服務的所有資料庫,包含服務級的管理許可權,比如showdown

13、資料庫:物件是某乙個資料庫

14、表:物件是資料庫中某個表

15、列:物件是表中的某個列,比如:grant select (name) on *** to ***

16、程式:物件是儲存過程和方法。

17、information_scheme,資料庫和表是存放資料的,那麼誰來存放 資料庫和表這些資訊呢? information_scheme 就是記錄資料庫和表的,需要注意的是,infromation_scheme沒有對應的物理檔案,它是mysql在記憶體中維護的。

18、許可權設定原則:

a、盡量縮小許可權

b、按業務,分離使用者,不同的業務對應不同的使用者

c、避免許可權粒度太細,因為mysql許可權檢查,會影響效能。

19、檔案洩密,linux下mysql客戶端執行的操作記錄在檔案 ~/.mysql_history中,輸出重定向/dev/null

20、密碼丟失怎麼辦?

a、mysql啟動,增加選項重置密碼

b、mysql啟動,增加選項不檢查許可權,登陸後修改密碼,退出重啟啟動。

mysql 許可權控制

mysql許可權檢查原理 使用者 伺服器,分為兩個階段 1.使用者有沒有許可權連線上來 2.有沒有許可權執行此操作 增刪查改 對於1 伺服器如何判斷使用者有沒有許可權連線 根據host,user,password這三個引數判斷的,使用者的這三個資訊儲存在mysql.user表中 修改host域,使i...

mysql 許可權管理無效 mysql 許可權控制筆記

階段1 伺服器檢查是否允許你連線。階段2 假定你能連線,伺服器檢查你發出的每個請求。看你是否有足夠的許可權實施它。例如,如果你從資料庫表中選擇 select 行或從資料庫刪除表,伺服器確定你對錶有select許可權或對資料庫有drop許可權。1.許可權檢視 mysql show grants for...

mysql 使用者許可權控制

mysql使用表user,來儲存所有使用者的操作許可權,該錶在mysql資料庫中。新增和修改使用者的許可權,可以通過grant命令來完成,例如 grant privilege all privileges on table to root ipaddr identified by passwd wi...