婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > MySQL 權限控制細節分析

MySQL 權限控制細節分析

熱門標簽:怎樣在地圖標注銷售區域 啥是企業400電話辦理 曲靖移動外呼系統公司 南昌三維地圖標注 地圖標注費用是多少 百應電話機器人優勢 武漢網絡外呼系統服務商 外呼系統打電話上限是多少 電話外呼系統改號

   今天周天,早上懶了一會兒,起的有點兒晚,中午沒事兒干,重新看了看MySQL里面的權限控制模塊,再次回頭看,還是有很多收獲的細節,這里記錄一下,方便自己后續查看。
    關于權限部分的內容,之前3月11號的文章中有寫過一些,今天的內容,我們使用一個一個的細節知識點來撰寫(本文中所使用的MySQL版本是5.7.16),在寫這些知識點之前,我們首先介紹一下MySQL的權限控制粒度、然后了解一下MySQL中客戶端發起請求的時候,服務端所做的核實工作,先來看權限控制粒度:

1、全局層級

    全局權限使用于給一個給定服務器中的所有數據庫,這些權限存儲在mysql.user表中,使用grant all on *.*的方法和revoke all on *.*的方法授予或者回收權限。

2、數據庫層級

    數據庫權限適用于一個給定數據庫中的所有目標,包含表對象和存儲過程,這些權限存儲在mysql.db表中,使用grant all on db_name.*或者對應的revoke方法可以授予和回收數據庫權限

3、表層級

   表權限適用于一個給定表中的所有列,這些權限存儲在mysql的tables_priv表中,一般使用grant all on db_name.tbl_name和對應的revoke語句來授予或者撤銷權限。

4、列層級的權限

    列層級的權限適用于一個給定表中的指定列,這些權限存儲在mysql.columns_priv的表中,由于這個權限不常用,這里給出它的授權方法示例,如下:

首先我們創建一個用戶,擁有yeyztest.test1這個表的select權限:

mysql:mysql 19:35:38>>show grants for dba_yeyz@'192.168.18.%' ;
+------------------------------------------------------------------------------+
| Grants for dba_yeyz@192.168.18.%                       |
+------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'dba_yeyz'@'192.168.18.%'               |
| GRANT SELECT ON `yeyztest`.`test1` TO 'dba_yeyz'@'192.168.18.%'        |
+------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

然后我們多test1中的一個字段id進行update操作,結果如下:

mysql> select * from test1;
+---------------+
| id      |
+---------------+
|      22 |
| 3333333333333 |
+---------------+
2 rows in set (0.00 sec)

mysql> update test1 set id=2 where id=22;
ERROR 1142 (42000): UPDATE command denied to user 'dba_yeyz'@'192.168.18.**' for table 'test1'

當然,我們是不能進行update的,這個時候,我們使用root賬號給這個dba_yeyz的賬號一個id列的權限,然后再看它的結果:

mysql:mysql 19:38:38>>show grants for dba_yeyz@'192.168.18.%' ;
+------------------------------------------------------------------------------+
| Grants for dba_yeyz@192.168.18.%                       |
+------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'dba_yeyz'@'192.168.18.%'               |
| GRANT SELECT ON `yeyztest`.`test1` TO 'dba_yeyz'@'192.168.18.%'       |
| GRANT SELECT, UPDATE (id) ON `yeyztest`.`test1` TO 'dba_yeyz'@'192.168.18.%' |
+------------------------------------------------------------------------------+
3 rows in set (0.00 sec)

這里需要注意給字段添加權限的語句,也就是:

grant  update (id) on yeyztest.test1 to XXXXXX

也就是在權限后面跟上字段的名稱。

這個時候,我們查詢一下columns_priv的表,可以看到里面的記錄是:

mysql:mysql 19:39:46>>select * from columns_priv;
+--------------+----------+----------+------------+-------------+---------------------+-------------+
| Host     | Db    | User   | Table_name | Column_name | Timestamp      | Column_priv |
+--------------+----------+----------+------------+-------------+---------------------+-------------+
| 192.168.18.% | yeyztest | dba_yeyz | test1   | id     | 0000-00-00 00:00:00 | Update   |
+--------------+----------+----------+------------+-------------+---------------------+-------------+
1 row in set (0.00 sec)

再次用dba_yeyz進行update操作,可以看到結果:

mysql> update test1 set id=2 where id=22;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> select *from test1;
+---------------+
| id      |
+---------------+
|       2 |
| 3333333333333 |
+---------------+
2 rows in set (0.00 sec)

   將id=22的列成功改成了id=2。

5、子程序層級

    create routine、alter routine、execute和grant權限適用于已經存儲的子程序,這些權限可以被授予為全局層級和數據庫層級,可以被存儲在mysql.procs_priv中。

客戶端發起請求的時候,MySQL服務器核實請求時候的流程圖如下:

  我將今天看到的一些細節的知識點一個一個羅列出來,希望對大家有點兒幫助:

1、在MySQL5.7.16版本中,mysql系統庫中已經沒有host表了,跟權限控制相關的表只有5個,分別是user、db、table_priv、proc_priv、column_priv。

2、mysql.user表的主鍵是用user和host聯合起來組成的,且看表結構:

mysql--dba_admin@127.0.0.1:mysql 19:44:56>>show create table mysql.user\G
*************************** 1. row ***************************
    Table: user
Create Table: CREATE TABLE `user` (
 `Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '',
 `User` char(32) COLLATE utf8_bin NOT NULL DEFAULT '',
---------------權限字段(29個)--------------
 `Select_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
 ......此處省略

---------------安全字段(4個)---------------
 `ssl_type` enum('','ANY','X509','SPECIFIED') CHARACTER SET utf8 NOT NULL DEFAULT '',
 `ssl_cipher` blob NOT NULL,
 `x509_issuer` blob NOT NULL,
 `x509_subject` blob NOT NULL,
---------------資源控制字段(4個)--------------
 `max_questions` int(11) unsigned NOT NULL DEFAULT '0',
 `max_updates` int(11) unsigned NOT NULL DEFAULT '0',
 `max_connections` int(11) unsigned NOT NULL DEFAULT '0',
 `max_user_connections` int(11) unsigned NOT NULL DEFAULT '0',
--------------插件字段(1個)---------------
 `plugin` char(64) COLLATE utf8_bin NOT NULL DEFAULT 'mysql_native_password',
--------------密碼字段(5個)--------------
 `authentication_string` text COLLATE utf8_bin,
 `password_expired` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
 `password_last_changed` timestamp NULL DEFAULT NULL,
 `password_lifetime` smallint(5) unsigned DEFAULT NULL,
 `account_locked` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
 PRIMARY KEY (`Host`,`User`) -------------聯合主鍵,host在前-----------
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Users and global privileges'
1 row in set (0.00 sec)

3、tables_priv表中只有以下權限,也就是關于表的權限:

select、insert、update、delete、drop、create、alter、grant、references、index、create view、show view、trigger;

columns_priv表中的權限只有下面四個:select、insert、update,references

4、修改一個用戶的密碼,一般有以下幾種方式:

set password for user@host = password('newpassword');
update mysql.user set authentication_string=password('pwd') where user='username' and host='hostname';
alter user user@host identified by 'newpassword';
mysqladmin -u username -h hostname -p password "new password";

   最好的方式是alter user的方法,事實上,在新的版本8.0中,set password的方法已經不能使用了,所以建議使用alter user的方法設置新的密碼。

   除此之外,還有一種方法,不太常用,就是使用grant的方法覆蓋掉之前的密碼,這里我們簡單實驗一般,看看效果:

mysql:mysql 20:01:05>>GRANT SELECT ON `yeyztest`.`test` TO 'dba_yeyz'@'192.168.18.%' identified by '111111';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql:mysql 20:01:29>>select user,host,concat(user,'@','\'',host,'''),authentication_string from mysql.user;
+------------------+----------------+-----------------------------------+-------------------------------------------+
| user       | host      | concat(user,'@','\'',host,''')  | authentication_string           |
+------------------+----------------+-----------------------------------+-------------------------------------------+
| dba_yeyz     | 192.168.18.%  | dba_yeyz@'192.168.18.%'      | *FD571203974BA9AFE270FE62151AE967ECA5E0AA |
+------------------+----------------+-----------------------------------+-------------------------------------------+
11 rows in set (0.00 sec)

mysql:mysql 20:01:31>>GRANT SELECT ON `yeyztest`.`test` TO 'dba_yeyz'@'192.168.18.%' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql:mysql 20:01:57>>select user,host,concat(user,'@','\'',host,'''),authentication_string from mysql.user;
+------------------+----------------+-----------------------------------+-------------------------------------------+
| user       | host      | concat(user,'@','\'',host,''')  | authentication_string           |
+------------------+----------------+-----------------------------------+-------------------------------------------+
| dba_yeyz     | 192.168.18.%  | dba_yeyz@'192.168.18.%'      | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+------------------+----------------+-----------------------------------+-------------------------------------------+
1 rows in set (0.00 sec)

   上面的測試可以看到,當我們使用grant的方法給一個指定的用戶重新設置密碼的時候,之前的老密碼會被覆蓋,所以這個操作在線上應該慎用,在每次grant的時候看看有沒有已經存在的賬號,確認沒有之后,再進行grant操作

5、如果我們不慎忘記了mysql的root密碼,可以重新啟動mysql服務,加上--skip-grant-tables這個參數來啟動mysql服務,這樣就可以直接免除了在權限表里面的匹配工作,直接登陸進mysql服務中,從而修改root賬號的密碼。

6、如果使用update或者insert記錄到mysql.user表中的方法創建賬戶或者修改密碼,在執行完語句之后,必須使用flush privileges的操作刷新權限表,否則該操作無法產生效果。

7、有幾個權限會影響mysqladmin工具的執行,分別是

reload權限:影響flush操作

shutdown權限:影響shutdown操作

process權限:影響processlist操作

super權限:影響kill操作

8、之前提到了mysql.user表中的資源控制的字段,分別是

max_questions每小時最大請求數、max_updates每小時最大更新數、max_connections每小時最大連接數、max_user_connections單個用戶可同時建立的最大連接數。

如果我們想給一個用戶設置這個參數,可以使用如下的SQL來進行設置:

mysql:mysql 20:01:58>>GRANT SELECT ON `yeyztest`.`test` TO 'dba_yeyz'@'192.168.18.%' with max_queries_per_hour 1000;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql:mysql 20:13:13>>select user,host,max_questions from mysql.user where user='dba_yeyz';  
+----------+--------------+---------------+
| user   | host     | max_questions |
+----------+--------------+---------------+
| dba_yeyz | 192.168.18.% |     1000 |
+----------+--------------+---------------+
1 row in set (0.00 sec)

注意到,這里的grant語句中使用了with這個選項,with后面可以跟的選項有5個,分別是:

grant option:被授權的用戶可以將這些權限賦予別的用戶

max_queries_per_hour count:每個小時可以執行count次查詢;

max_updates_per_hour count:每個小時可以執行count次更新;

max_connections_per_hour count:每個小時可以建立count個連接;

max_user_connections count:設置單個用戶可以同時建立count個連接

9、設置全局變量:

SET GLOBAL default_password_lifetime = 180;

SET GLOBAL default_password_lifetime = 0;

可以設置密碼的生命周期為6個月,6個月之后失效,如果設置為0,則一直有效。

當然,還可以在創建用戶的時候就指定密碼的修改周期或者禁用密碼的修改周期:

CREATE USER 'jeffrey'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;
ALTER USER 'jeffrey'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;

CREATE USER 'jeffrey'@'localhost' PASSWORD EXPIRE NEVER;
ALTER USER 'jeffrey'@'localhost' PASSWORD EXPIRE NEVER;

10、有時候我們似乎已經刪除了賬號密碼,但是卻還可以通過賬號密碼進行訪問,這個時候,需要檢查一個設置,就是看看user表中是否有空記錄:

select user,host from mysql.user where user='';

很有可能是你設置了user為空的記錄,這樣導致所有的用戶都可以直接登陸。如果有,最好直接干掉它,因為它違背了安全的宗旨。

以上就是MySQL 權限控制細節分析的詳細內容,更多關于MySQL 權限控制的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • 淺談MySQL user權限表
  • Mysql 用戶權限管理實現
  • 詳解MySQL 用戶權限管理
  • MySQL 權限控制詳解
  • mysql創建用戶并賦予用戶權限詳細操作教程
  • Mysql修改存儲過程相關權限問題
  • MySQL8.0設置遠程訪問權限的方法
  • MySQL之權限以及設計數據庫案例講解

標簽:黑河 隨州 甘南 錦州 資陽 荊州 滄州 吉林

巨人網絡通訊聲明:本文標題《MySQL 權限控制細節分析》,本文關鍵詞  MySQL,權限,控制,細節,分析,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySQL 權限控制細節分析》相關的同類信息!
  • 本頁收集關于MySQL 權限控制細節分析的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    成人自拍视频在线| 国产在线精品一区二区三区不卡| 国产精品久久毛片| 久久国产精品免费| 欧美一区二区福利视频| 午夜影院在线观看欧美| 欧美日韩三级一区| 亚洲va中文字幕| 欧美一区二区性放荡片| 天堂久久久久va久久久久| 欧美一区三区二区| 国内外成人在线| 日本一区二区三级电影在线观看| 国产成人综合在线观看| 国产精品久久久久久久久免费丝袜| 99久久久久久99| 香蕉久久夜色精品国产使用方法| 日韩一区二区三区在线观看| 国产精品白丝av| 一区二区高清免费观看影视大全| 51午夜精品国产| 高清在线成人网| 亚欧色一区w666天堂| 欧美videofree性高清杂交| 丁香亚洲综合激情啪啪综合| 亚洲二区视频在线| 国产欧美日韩三区| 在线成人av网站| 成人激情动漫在线观看| 午夜日韩在线观看| 久久久www成人免费无遮挡大片| 色噜噜狠狠成人网p站| 免费成人在线观看视频| 成人免费在线观看入口| 欧美精品自拍偷拍动漫精品| 国产成人8x视频一区二区| 亚洲成人免费电影| 国产精品乱人伦中文| 欧美电视剧免费观看| 一本大道综合伊人精品热热 | 欧美日韩电影一区| 国产精品综合二区| 日本亚洲免费观看| 亚洲视频香蕉人妖| 久久久电影一区二区三区| 欧美日韩中文国产| 成人午夜视频网站| 老司机精品视频线观看86| 亚洲欧美视频在线观看| 3d动漫精品啪啪1区2区免费| 丰满岳乱妇一区二区三区| 日本中文字幕不卡| 国产精品国产成人国产三级| www激情久久| 欧美人伦禁忌dvd放荡欲情| 成人动漫一区二区| 免费观看日韩电影| 亚洲一卡二卡三卡四卡五卡| 国产精品乱码妇女bbbb| 国产欧美一区二区在线| 欧美精品久久天天躁| 99r精品视频| 国产精品1区2区| 韩国三级在线一区| 午夜激情久久久| 国产精品成人一区二区三区夜夜夜| 久久久欧美精品sm网站| 久久先锋影音av鲁色资源网| 久久一区二区三区国产精品| 久久婷婷国产综合国色天香 | 蜜臀av一区二区在线免费观看 | 亚洲一区二区三区国产| 伊人性伊人情综合网| 亚洲日本va在线观看| 依依成人综合视频| 亚洲国产激情av| 色哟哟亚洲精品| av男人天堂一区| av成人老司机| 在线精品视频一区二区| 欧美日韩一区视频| 在线观看91av| 精品久久久久久久久久久久久久久 | 欧美性欧美巨大黑白大战| 在线观看免费视频综合| 欧美疯狂性受xxxxx喷水图片| 91精品一区二区三区在线观看| 91精品国产综合久久精品麻豆| 日韩免费观看高清完整版 | 岛国av在线一区| 色香蕉成人二区免费| 91精品国产欧美一区二区18| 久久综合中文字幕| 亚洲乱码国产乱码精品精小说| 午夜成人免费视频| 国产一区二区三区电影在线观看 | 中国色在线观看另类| 亚洲伦在线观看| 久久精品理论片| 93久久精品日日躁夜夜躁欧美| 欧美日韩在线三级| 国产网红主播福利一区二区| 一区二区在线观看免费视频播放| 奇米一区二区三区| 91丨porny丨蝌蚪视频| 日韩网站在线看片你懂的| 亚洲免费看黄网站| 久久国产精品色| 欧美色图片你懂的| 国产精品麻豆欧美日韩ww| 喷白浆一区二区| 日本二三区不卡| 国产精品每日更新在线播放网址| 蜜臀av性久久久久蜜臀av麻豆| 久久综合九色综合欧美就去吻 | 色综合久久中文字幕| 日韩视频在线永久播放| 亚洲男人天堂av| 丁香天五香天堂综合| 日韩欧美一区中文| 亚洲mv大片欧洲mv大片精品| 成人av动漫网站| 久久精品一区二区三区四区| 婷婷成人综合网| 色婷婷久久综合| 欧美国产日韩一二三区| 久久国产尿小便嘘嘘尿| 欧美一区二区三区在线观看视频| 亚洲欧洲无码一区二区三区| 国产二区国产一区在线观看| 欧美精品一区二区在线观看| 亚洲高清视频在线| 色狠狠色狠狠综合| 亚洲欧洲美洲综合色网| 国产成人免费xxxxxxxx| 久久一区二区三区四区| 激情综合色丁香一区二区| 欧美日韩国产高清一区二区| 一区二区三区鲁丝不卡| 色悠悠亚洲一区二区| 亚洲少妇30p| 大陆成人av片| 久久久不卡影院| 国产成人免费在线视频| 久久久影院官网| 国产美女av一区二区三区| 久久精品视频免费观看| 蜜桃视频一区二区三区在线观看| 日韩欧美精品三级| 日韩电影一二三区| 欧美影院午夜播放| 青青草一区二区三区| 久久一区二区三区四区| 成人av手机在线观看| 亚洲另类在线视频| 欧美日韩一二区| 狠狠色综合色综合网络| 国产日韩欧美高清在线| 97国产一区二区| 日韩国产成人精品| 国产视频一区在线播放| 色婷婷久久久亚洲一区二区三区| 亚洲成人av电影在线| 久久一二三国产| 欧美最猛性xxxxx直播| 狠狠色综合日日| 亚洲欧美精品午睡沙发| 日韩美女在线视频| 99re这里只有精品6| 日韩电影免费在线观看网站| 欧美国产综合一区二区| 欧美人牲a欧美精品| 成人高清视频在线观看| 亚洲高清久久久| 国产亚洲1区2区3区| 欧美精品在线视频| 成人综合在线观看| 日韩一区精品字幕| √…a在线天堂一区| 日韩一级片在线观看| 91在线你懂得| 老司机一区二区| 国产精品成人免费精品自在线观看 | 国产麻豆9l精品三级站| 一区二区三区四区不卡视频| 精品成人a区在线观看| 欧美日韩在线三级| 麻豆91在线观看| 久久精品夜色噜噜亚洲aⅴ| 欧洲精品在线观看| 成人永久免费视频| 强制捆绑调教一区二区| 亚洲国产欧美另类丝袜| 欧美精品一区二区久久久| 欧美日韩高清一区| 一本久久a久久免费精品不卡| 亚洲线精品一区二区三区八戒| 久久亚洲一区二区三区明星换脸 | 亚洲免费观看高清完整| 国产精品无码永久免费888|