亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

知識歸納

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

  • 基本觀點(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時候指定的用戶和主機(jī)
  • current_user() 返回在mysql.user表中匹配到的用戶和主機(jī),這將確定你在數(shù)據(jù)庫中的權(quán)限

當(dāng)你登錄服務(wù)器并執(zhí)行MySQL的命令時,系統(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(如果是存儲過程操作則檢查mysql.procs_priv),如果滿足,則執(zhí)行操作
  • 如果以上檢查均失敗,則系統(tǒng)拒絕執(zhí)行操作。

測試過程
創(chuàng)建3個用戶名相同,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)

從另外一個機(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'
刪除掉這個用戶再登陸

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)

此時匹配的用戶是bruce@%
然后把這個用戶也刪除,再登陸

[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)

此時匹配的是''@'%' 用戶

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

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

相關(guān)文章

  • mysql5.7.13 環(huán)境搭建教程(解壓縮版)

    mysql5.7.13 環(huán)境搭建教程(解壓縮版)

    這篇文章主要為大家詳細(xì)介紹了mysql解壓縮版環(huán)境搭建教程,具有一定的實(shí)用性,感興趣的小伙伴們可以參考一下
    2016-07-07
  • mysql觸發(fā)器中包含select語句問題

    mysql觸發(fā)器中包含select語句問題

    這篇文章主要介紹了mysql觸發(fā)器中包含select語句問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • MySQL壓測神器HammerDB的部署及使用詳解

    MySQL壓測神器HammerDB的部署及使用詳解

    HammerDB?是一個開源的數(shù)據(jù)庫負(fù)載測試和基準(zhǔn)測試工具,同時支持?Windows?和?Linux?平臺,這篇文章主要介紹了MySQL壓測神器HammerDB的部署及使用,需要的朋友可以參考下
    2022-08-08
  • 淺談mysql explain中key_len的計算方法

    淺談mysql explain中key_len的計算方法

    下面小編就為大家?guī)硪黄獪\談mysql explain中key_len的計算方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • MYSQL中獲取得最后一條記錄的語句

    MYSQL中獲取得最后一條記錄的語句

    MYSQL中獲取得最后一條記錄的語句,需要的朋友可以參考下。
    2010-03-03
  • mysql 主從數(shù)據(jù)不一致,提示: Slave_SQL_Running: No 的解決方法

    mysql 主從數(shù)據(jù)不一致,提示: Slave_SQL_Running: No 的解決方法

    這篇文章主要介紹了mysql 主從數(shù)據(jù)不一致,提示: Slave_SQL_Running: No 的解決方法,總結(jié)分析了MySQL主從數(shù)據(jù)不一致的原因與常見處理技巧,需要的朋友可以參考下
    2020-02-02
  • 在MySQL中使用Sphinx實(shí)現(xiàn)多線程搜索的方法

    在MySQL中使用Sphinx實(shí)現(xiàn)多線程搜索的方法

    這篇文章主要介紹了在MySQL中使用Sphinx實(shí)現(xiàn)多線程搜索的方法,修改Sphinx的搜索引擎配置即可,需要的朋友可以參考下
    2015-06-06
  • Javaweb之MySQL中的多表查詢語句

    Javaweb之MySQL中的多表查詢語句

    初學(xué)者比較容易理解的多表查詢,就是直接查詢兩張表的字段,當(dāng)然,星號可以改為對應(yīng)的字段名,這篇文章主要介紹了Javaweb?MySQL中的多表查詢,需要的朋友可以參考下
    2023-07-07
  • mysql中的mvcc?原理詳解

    mysql中的mvcc?原理詳解

    MVCC多版本并發(fā)控制,是用來在數(shù)據(jù)庫中控制并發(fā)的方法,實(shí)現(xiàn)對數(shù)據(jù)庫的并發(fā)訪問用的,這篇文章主要介紹了mysql?mvcc?原理詳解,需要的朋友可以參考下
    2022-10-10
  • mysql視圖之管理視圖實(shí)例詳解【增刪改查操作】

    mysql視圖之管理視圖實(shí)例詳解【增刪改查操作】

    這篇文章主要介紹了mysql視圖之管理視圖,結(jié)合實(shí)例形式詳細(xì)分析了mysql視圖增刪改查操作具體實(shí)現(xiàn)技巧與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-12-12

最新評論