關於Mysql許可權表的使用小結

2021-06-09 12:44:28 字數 1154 閱讀 7522

前幾天遇到乙個問題。

我的msql許可權表(mysql.user)的內容是這樣的:

localhsot  user  password

%root

*81f5e21e35407d884a6cd4a731aebfb6af209e1b

bogon

root

*81f5e21e35407d884a6cd4a731aebfb6af209e1b

localhost

xxw::1

root

*81f5e21e35407d884a6cd4a731aebfb6af209e1b

localhost

bogon

然後,我從localhost登陸這個伺服器

> mysql -u root -p

error 1045 (28000): access denied for user 'root'@'localhost' (using password: yes).

經過查詢官方文件,原來和許可權表的儲存規則和排序規則有關係:

儲存規則:如果user欄位不為空,必須嚴格匹配;如果user欄位儲存的值為空值,匹配所有使用者。同時,連線資訊中,如果沒有指定user,或者-u後面是空值,系統會認為是某一使用者不提供使用者名稱來訪問,所以可以匹配所有使用者名稱;

排序規則:許可權表被讀入記憶體的時候,按照限制的範圍大小來排序,限制越詳細的排在前面。首先按照host欄位排序,如果host相同,就按照user欄位排序。所以,如果有連線資訊輸入的時候,是按照讀入記憶體的順序匹配的,而不是按照資料庫裡的規則匹配。

回頭看上面的例子,讀入記憶體後,許可權表排序如下:

localhost

xxwlocalhost

bogon

root

*81f5e21e35407d884a6cd4a731aebfb6af209e1b

bogon

::1root

*81f5e21e35407d884a6cd4a731aebfb6af209e1b

%root

*81f5e21e35407d884a6cd4a731aebfb6af209e1b

按照以上規則,匹配到了第二條。本條規則的密碼為空,但是我輸入了最後一條儲存的密碼,所以登入失敗。

但是mysql的提示確實有誤導性,使使用者認為是匹配到了最後一條……

關於Mysql許可權表的使用小結

關於mysql許可權表的使用小結 前幾天遇到乙個問題。我的msql許可權表 mysql.user 的內容是這樣的 www.2cto.com localhsot user password root 81f5e21e35407d884a6cd4a731aebfb6af209e1b bogon root...

Oracle Oracle表許可權小結

在資料庫中,表是我們接觸得最多的資料庫物件,接下來對與表有關的系統許可權與物件許可權做乙個小結。1 與表有關的系統許可權 create table 在當前schema中建立 刪除 修改表。select any table 查詢資料庫中的任何表 alter any table 更改資料庫中的任何表 d...

關於使用BitMap的小結

建立bitmap bitmap bm null bm bitmap.createbitmap w,h,config.alpha 8 每個畫素佔乙個位元組 8位 bm bitmap.createbitmap w,h,config.argb 4444 兩個位元組 bm bitmap.createbitm...