最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL驗(yàn)證用戶權(quán)限的方法

 更新時(shí)間:2015年11月05日 10:37:24   作者:天堂  
這篇文章主要介紹了MySQL驗(yàn)證用戶權(quán)限的方法,需要的朋友可以參考下

知識(shí)歸納

因?yàn)镸ySQL是使用User和Host兩個(gè)字段來確定用戶身份的,這樣就帶來一個(gè)問題,就是一個(gè)客戶端到底屬于哪個(gè)host。
如果一個(gè)客戶端同時(shí)匹配幾個(gè)Host,對(duì)用戶的確定將按照下面的優(yōu)先級(jí)來排

  • 基本觀點(diǎn)越精確的匹配越優(yōu)先
  • Host列上,越是確定的Host越優(yōu)先,[localhost, 192.168.1.1, wiki.yfang.cn] 優(yōu)先于[192.168.%, %.yfang.cn],優(yōu)先于[192.%, %.cn],優(yōu)先于[%]
  • User列上,明確的username優(yōu)先于空username。(空username匹配所有用戶名,即匿名用戶匹配所有用戶)
  • Host列優(yōu)先于User列考慮

當(dāng)你登錄mysql服務(wù)器之后,你可以使用user()和current_user()來檢查你登陸的用戶。

  • user() 返回你連接server時(shí)候指定的用戶和主機(jī)
  • current_user() 返回在mysql.user表中匹配到的用戶和主機(jī),這將確定你在數(shù)據(jù)庫(kù)中的權(quán)限

當(dāng)你登錄服務(wù)器并執(zhí)行MySQL的命令時(shí),系統(tǒng)將檢查你當(dāng)前的用戶(current_user)是否有權(quán)限進(jìn)行當(dāng)前操作。

  • 首先檢查user表中的全局權(quán)限,如果滿足條件,則執(zhí)行操作
  • 如果上面的失敗,則檢查mysql.db表中是否有滿足條件的權(quán)限,如果滿足,則執(zhí)行操作
  • 如果上面的失敗,則檢查mysql.table_priv和mysql.columns_priv(如果是存儲(chǔ)過程操作則檢查mysql.procs_priv),如果滿足,則執(zhí)行操作
  • 如果以上檢查均失敗,則系統(tǒng)拒絕執(zhí)行操作。

測(cè)試過程
創(chuàng)建3個(gè)用戶名相同,HOST和權(quán)限都不同的USER

mysql> grant select on *.* to ''@'%' identified by '123';
Query OK, 0 rows affected (0.00 sec)
mysql> grant select,createon *.* to 'bruce'@'10.20.0.232' identified by '123';
Query OK, 0 rows affected (0.01 sec)
mysql> grant select,create,deleteon *.* to 'bruce'@'%' identified by'123';
Query OK, 0rows affected (0.00 sec)

從另外一個(gè)機(jī)器登陸過來

[root@brucetest7 ~]# mysql -ubruce -p -h10.20.0.231
Enter password: 
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.5.20-log MySQL Community Server (GPL)
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome tomodify and redistribute it under the GPL v2 license
Type 'help;' or '\h' for help. Type'\c'to clear the current inputstatement.
MySQL [(none)]> show grants;
+-------------------------------------------------------------------------------------------------------------------------+
| Grants for bruce@10.20.0.232                       |
+-------------------------------------------------------------------------------------------------------------------------+
| GRANT SELECT, CREATEON *.* TO 'bruce'@'10.20.0.232' IDENTIFIED BY PASSWORD'*23AE809DDACAF96AF0FD78ED04B6A265E05AA257' |
+-------------------------------------------------------------------------------------------------------------------------+
1 row inset (0.00 sec)
MySQL [(none)]> select user(), current_user();
+-------------------+-------------------+
| user()   | current_user() |
+-------------------+-------------------+
| bruce@10.20.0.232 | bruce@10.20.0.232 |
+-------------------+-------------------+
1 row in set (0.03 sec)

明確的user,host,進(jìn)行精確匹配,找到用戶為'bruce'@'10.20.0.232'
刪除掉這個(gè)用戶再登陸

mysql> delete from mysql.userwhereuser='bruce'andhost='10.20.0.232';
Query OK, 1row affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

[root@brucetest7 ~]# mysql -ubruce -p -h10.20.0.231
Enter password: 
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.5.20-log MySQL Community Server (GPL)
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome tomodify and redistribute it under the GPL v2 license
Type 'help;' or '\h' for help. Type'\c'to clear the current inputstatement.

MySQL [(none)]>show grants;
+-----------------------------------------------------------------------------------------------------------------------+
| Grants for bruce@%                         |
+-----------------------------------------------------------------------------------------------------------------------+
| GRANT SELECT, DELETE, CREATEON*.* TO 'bruce'@'%' IDENTIFIED BYPASSWORD'*23AE809DDACAF96AF0FD78ED04B6A265E05AA257' |
+-----------------------------------------------------------------------------------------------------------------------+
1 row inset (0.00 sec)
MySQL [(none)]> select user(), current_user();
+-------------------+----------------+
| user()   | current_user() |
+-------------------+----------------+
| bruce@10.20.0.232 | bruce@%  |
+-------------------+----------------+
1 row in set (0.00 sec)

此時(shí)匹配的用戶是bruce@%
然后把這個(gè)用戶也刪除,再登陸

[root@brucetest7 ~]# mysql -ubruce -p -h10.20.0.231
Enter password: 
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.5.20-log MySQL Community Server (GPL)
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome tomodify and redistribute it under the GPL v2 license
Type 'help;' or '\h' for help. Type '\c'to clear the current inputstatement.
MySQL [(none)]> show grants;
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for @%                                              |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT SELECT ON*.* TO''@'%' IDENTIFIED BY PASSWORD '*23AE809DDACAF96AF0FD78ED04B6A265E05AA257'                         |
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, CREATE VIEW, SHOW VIEW, CREATEROUTINE, EVENT, TRIGGER ON `test`.* TO''@'%' |
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATETEMPORARY TABLES, LOCK TABLES, CREATE VIEW, SHOW VIEW, CREATEROUTINE, EVENT, TRIGGER ON `test\_%`.* TO''@'%' |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
MySQL [(none)]> select user(), current_user();
+-------------------+----------------+
| user()   | current_user() |
+-------------------+----------------+
| bruce@10.20.0.232 | @%    |
+-------------------+----------------+
1 row in set (0.00 sec)

此時(shí)匹配的是''@'%' 用戶

對(duì)于空用戶,默認(rèn)有對(duì)test或test開頭的數(shù)據(jù)庫(kù)有權(quán)限。

以上就是MySQL驗(yàn)證用戶權(quán)限的方法,希望對(duì)大家的學(xué)習(xí)有所啟發(fā)。

相關(guān)文章

  • 詳解MySQL中的字符集和排序規(guī)則

    詳解MySQL中的字符集和排序規(guī)則

    MySQL字符集用于定義數(shù)據(jù)庫(kù)中存儲(chǔ)的文本數(shù)據(jù)的編碼格式,而排序規(guī)則則用于確定如何對(duì)文本數(shù)據(jù)進(jìn)行排序和比較,本文將給大家講講MySQL中的字符集和排序規(guī)則,需要的朋友可以參考下
    2023-09-09
  • 使用innodb_force_recovery解決MySQL崩潰無法重啟問題

    使用innodb_force_recovery解決MySQL崩潰無法重啟問題

    這篇文章主要介紹了使用innodb_force_recovery解決MySQL崩潰無法重啟問題,這只一個(gè)成功案例,并不是萬能的解決方法,需要酌情考慮,需要的朋友可以參考下
    2015-05-05
  • MySQL 觸發(fā)器(TRIGGER)的具體使用

    MySQL 觸發(fā)器(TRIGGER)的具體使用

    本文主要介紹了MySQL 觸發(fā)器(TRIGGER)的具體使用,包含INSERT 觸發(fā)器,UPDATE觸發(fā)器和DELETE觸發(fā)器這三種,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-05-05
  • MySQL sum后再計(jì)算percentage的多種解決辦法

    MySQL sum后再計(jì)算percentage的多種解決辦法

    這篇文章主要介紹了MySQL sum后再計(jì)算percentage的多種解決辦法,over() 函數(shù),Cross Join,Select 嵌套查詢以及 with 函數(shù)處理,文中通過代碼示例講解的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • Prometheus 插件mysql_exporter安裝過程

    Prometheus 插件mysql_exporter安裝過程

    mysql_exporter是用來收集MysQL或者M(jìn)ariadb數(shù)據(jù)庫(kù)相關(guān)指標(biāo)的,mysql_exporter需要連接到數(shù)據(jù)庫(kù)并有相關(guān)權(quán)限,這篇文章主要介紹了Prometheus插件安裝(mysql_exporter),需要的朋友可以參考下
    2023-06-06
  • mysql 8.0.15 winx64解壓版圖文安裝教程

    mysql 8.0.15 winx64解壓版圖文安裝教程

    這篇文章主要為大家詳細(xì)介紹了mysql 8.0.15 winx64解壓版圖文安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • 這種sql寫法真的會(huì)導(dǎo)致索引失效嗎

    這種sql寫法真的會(huì)導(dǎo)致索引失效嗎

    這篇文章主要給大家介紹了關(guān)于網(wǎng)上流傳的某種sql寫法會(huì)導(dǎo)致索引失效的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用sql具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • mysql創(chuàng)建學(xué)生表、課程表及學(xué)生選課表詳細(xì)代碼

    mysql創(chuàng)建學(xué)生表、課程表及學(xué)生選課表詳細(xì)代碼

    這篇文章主要給大家介紹了mysql創(chuàng)建學(xué)生表、課程表及學(xué)生選課表的相關(guān)資料,學(xué)生、課程以及成績(jī)的增刪改查都是建立在連接數(shù)據(jù)庫(kù)的基礎(chǔ)之上,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • Mac下MySQL5.7忘記root密碼的解決方法

    Mac下MySQL5.7忘記root密碼的解決方法

    這篇文章主要為大家詳細(xì)介紹了Mac下MySQL5.7忘記root密碼的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • mysql數(shù)據(jù)庫(kù)忘記管理員密碼的解決方法

    mysql數(shù)據(jù)庫(kù)忘記管理員密碼的解決方法

    我們?cè)赪indows操作系統(tǒng)下編程會(huì)使用到MySQL數(shù)據(jù)庫(kù)。但是有時(shí),我們會(huì)忘記數(shù)據(jù)庫(kù)的登錄密碼?當(dāng)我們忘記了登錄密碼,無法進(jìn)入mysql時(shí),該怎么辦呢?這里我們提供mysql的登錄秘密的修改
    2018-02-02

最新評(píng)論

临夏县| 秭归县| 铜陵市| 射阳县| 万州区| 博野县| 凭祥市| 南江县| 乐至县| 渝北区| 浦北县| 定安县| 西青区| 昭觉县| 彭山县| 泸州市| 永仁县| 永福县| 东海县| 曲水县| 合阳县| 乐平市| 德清县| 绥中县| 昭觉县| 平湖市| 普安县| 通化县| 娄底市| 五原县| 张家界市| 怀仁县| 朝阳县| 平度市| 灵寿县| 黎川县| 雷山县| 长沙市| 崇仁县| 钟祥市| 永春县|