1. 程式人生 > >MySQL許可權篇討論之許可權收回之級聯影響

MySQL許可權篇討論之許可權收回之級聯影響

比如,A把許可權X授予了B(with grant option),B再把X許可權授予了C。

那麼A把B的X許可權收回之後,C的X許可權是否受到影響?答案是不影響。

D:\temp>mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 5.7.11-log MySQL Community Server (GPL)


Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.


Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql> show grants for 'ut01'@'%';
+----------------------------------+
| Grants for

[email protected]%                |
+----------------------------------+
| GRANT USAGE ON *.* TO 'ut01'@'%' |
+----------------------------------+
1 row in set (0.00 sec)


mysql> create user 'ut02'@'%';
Query OK, 0 rows affected (0.09 sec)


mysql> alter user 'ut02'@'%' identified by '20127163';
Query OK, 0 rows affected (0.38 sec)


mysql> show grants for 'ut02'@'%';
+----------------------------------+
| Grants for
[email protected]
%                |
+----------------------------------+
| GRANT USAGE ON *.* TO 'ut02'@'%' |
+----------------------------------+
1 row in set (0.00 sec)


mysql>

授予[email protected]%某個許可權:

mysql> grant select on test.t_area to 'ut01'@'%' with grant option;
Query OK, 0 rows affected (0.04 sec)


mysql> show grants for 'ut01'@'%';
+-----------------------------------------------------------------+
| Grants for

[email protected]%                                               |
+-----------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'ut01'@'%'                                |
| GRANT SELECT ON `test`.`t_area` TO 'ut01'@'%' WITH GRANT OPTION |
+-----------------------------------------------------------------+
2 rows in set (0.00 sec)


mysql>

此時,使用[email protected]%使用者將這個許可權授予[email protected]%使用者:

C:\Users\Administrator>mysql -uut01
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 5.7.11-log MySQL Community Server (GPL)


Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.


Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql> grant select on test.t_area to 'ut02'@'%';
Query OK, 0 rows affected (0.04 sec)


mysql> 

此時,[email protected]%的許可權:

mysql> show grants for 'ut02'@'%';
+-----------------------------------------------+
| Grants for [email protected]%                             |
+-----------------------------------------------+
| GRANT USAGE ON *.* TO 'ut02'@'%'              |
| GRANT SELECT ON `test`.`t_area` TO 'ut02'@'%' |
+-----------------------------------------------+
2 rows in set (0.00 sec)


mysql>

並且[email protected]%使用者能夠select這個物件:

mysql> use test
Database changed
mysql> select count(*) from test.t_area;
+----------+
| count(*) |
+----------+
|      228 |
+----------+
1 row in set (0.05 sec)


mysql>

現在,將[email protected]%的select許可權收回:

mysql> revoke select on test.t_area from 'ut01'@'%';
Query OK, 0 rows affected (0.10 sec)


mysql> show grants for 'ut02'@'%';
+-----------------------------------------------+
| Grants for [email protected]%                             |
+-----------------------------------------------+
| GRANT USAGE ON *.* TO 'ut02'@'%'              |
| GRANT SELECT ON `test`.`t_area` TO 'ut02'@'%' |  #[email protected]%使用者並沒有受到影響
+-----------------------------------------------+
2 rows in set (0.00 sec)


mysql> show grants for 'ut01'@'%';
+----------------------------------------------------------------+
| Grants for [email protected]%                                              |
+----------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'ut01'@'%'                               |
| GRANT USAGE ON `test`.`t_area` TO 'ut01'@'%' WITH GRANT OPTION | #grant option許可權還保留在
+----------------------------------------------------------------+
2 rows in set (0.00 sec)


mysql> revoke grant option on test.t_area from 'ut01'@'%'; #一起收回
Query OK, 0 rows affected (0.05 sec)


mysql> show grants for 'ut01'@'%';
+----------------------------------+
| Grants for [email protected]%                |
+----------------------------------+
| GRANT USAGE ON *.* TO 'ut01'@'%' |
+----------------------------------+
1 row in set (0.00 sec)


mysql> show grants for 'ut02'@'%';
+-----------------------------------------------+
| Grants for [email protected]%                             |
+-----------------------------------------------+
| GRANT USAGE ON *.* TO 'ut02'@'%'              | 
| GRANT SELECT ON `test`.`t_area` TO 'ut02'@'%' |   #可見,許可權收回並不影響級聯
+-----------------------------------------------+
2 rows in set (0.00 sec)


mysql>

但是b授予c許可權時with grant option了呢?繼續看:



D:\temp>mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 17
Server version: 5.7.11-log MySQL Community Server (GPL)


Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.


Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql> create user 'ut01'@'%';
Query OK, 0 rows affected (0.06 sec)


mysql> alter user 'ut01'@'%' identified by '20127163';
Query OK, 0 rows affected (0.03 sec)


mysql> create user 'ut02'@'%';
Query OK, 0 rows affected (0.05 sec)


mysql> alter user 'ut02'@'%' identified by '20127163';
Query OK, 0 rows affected (0.05 sec)


mysql> show grants for 'ut01'@'%';
+----------------------------------+
| Grants for [email protected]%                |
+----------------------------------+
| GRANT USAGE ON *.* TO 'ut01'@'%' |
+----------------------------------+
1 row in set (0.00 sec)


mysql> show grants for 'ut02'@'%';
+----------------------------------+
| Grants for [email protected]%                |
+----------------------------------+
| GRANT USAGE ON *.* TO 'ut02'@'%' |
+----------------------------------+
1 row in set (0.00 sec)


mysql> grant select on test.t_area to 'ut01'@'%' with grant option;
Query OK, 0 rows affected (0.05 sec)
mysql>

此時登入[email protected]%使用者,並授予該許可權給[email protected]%使用者:

C:\Users\Administrator>mysql -uut02
ERROR 1045 (28000): Access denied for user 'ut02'@'localhost' (using password: YES)


C:\Users\Administrator>mysql -uut01
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 18
Server version: 5.7.11-log MySQL Community Server (GPL)


Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.


Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql> grant select on test.t_area to 'ut02'@'%' with grant option;
Query OK, 0 rows affected (0.06 sec)


mysql>

再檢視[email protected]%的許可權:
mysql> show grants for 'ut02'@'%';
+-----------------------------------------------------------------+
| Grants for [email protected]%                                               |
+-----------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'ut02'@'%'                                |
| GRANT SELECT ON `test`.`t_area` TO 'ut02'@'%' WITH GRANT OPTION |
+-----------------------------------------------------------------+
2 rows in set (0.00 sec)


mysql>

再將[email protected]%的grant option許可權回收:

mysql> revoke grant option on test.t_area from 'ut01'@'%';
Query OK, 0 rows affected (0.06 sec)


mysql> show grants for 'ut01'@'%';
+-----------------------------------------------+
| Grants for [email protected]%                             |
+-----------------------------------------------+
| GRANT USAGE ON *.* TO 'ut01'@'%'              |
| GRANT SELECT ON `test`.`t_area` TO 'ut01'@'%' |  #[email protected]%的grant option已經被回收

+-----------------------------------------------+
2 rows in set (0.00 sec)

mysql> show grants for 'ut02'@'%';
+-----------------------------------------------------------------+
| Grants for [email protected]%                                               |
+-----------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'ut02'@'%'                                |
| GRANT SELECT ON `test`.`t_area` TO 'ut02'@'%' WITH GRANT OPTION | #但是[email protected]%的grant option許可權依然存在
+-----------------------------------------------------------------+
2 rows in set (0.00 sec)


mysql>

再繼續將select許可權徹底revoke:

mysql> revoke select on test.t_area from 'ut01'@'%';
Query OK, 0 rows affected (0.05 sec)


mysql> show grants for 'ut01'@'%';
+----------------------------------+
| Grants for [email protected]%                |
+----------------------------------+
| GRANT USAGE ON *.* TO 'ut01'@'%' |
+----------------------------------+
1 row in set (0.00 sec)


mysql> show grants for 'ut02'@'%';
+-----------------------------------------------------------------+
| Grants for [email protected]%                                               |
+-----------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'ut02'@'%'                                |
| GRANT SELECT ON `test`.`t_area` TO 'ut02'@'%' WITH GRANT OPTION |  #可見依然沒有影響
+-----------------------------------------------------------------+
2 rows in set (0.00 sec)


mysql>

mysql裡的許可權要注意控制,否則就會出現上述情況。

相關推薦

MySQL許可權討論許可權收回影響

比如,A把許可權X授予了B(with grant option),B再把X許可權授予了C。 那麼A把B的X許可權收回之後,C的X許可權是否受到影響?答案是不影響。 D:\temp>mysql Welcome to the MySQL monitor.  Command

MySQL入門(五)高可用架構MHA

數據節點 ability ast 圖片 故障轉移 5.5 架構 日本 丟失 一、MHA原理 1、簡介: MHA(Master High Availability)目前在MySQL高可用方面是一個相對成熟的解決方案,它由日本DeNA公司youshimaton(現就職於

第十五節:pandasconcat()

pandas 進行 spa span 函數 行合並 http afr dataframe Pandas 提供了concat()函數可以輕松的將Series、DataFrame對象進行合並在一起。 pandas.concat(obj , axis=0 , join="inne

MYSQL數據庫中的主從復制的實現

服務器管理 配置文件 ble 添加 命令 方便 列表 nod 從服務器 主服務ip:192.168.1.107 級聯服務ip:192.168.1.110 從服務ip:192.168.1.106 一.主服務器設置: 1.修改配置文件 vim /etc/my.cn

MySQL許可權DROP

DROP許可權呢是刪除物件,擁有該許可權的使用者可以刪除指定範圍內的物件(schema、表和檢視)。 不能刪除除這些物件之外的其他物件。 mysql> show grants for 'ut01'@'%'; +-----------------------------

mysql學習筆記許可權

MySQL許可權的定義 01.作用物件 庫、表 02.許可權 細化到具體命令 03.歸屬 每次設定只能有一個“屬主”。沒有屬組或其他 概念 grant all on test.* to [email protected]‘10.0.0.%

MySQL許可權管理

1:伺服器首先會檢查你是否允許連線。因為建立使用者的時候會加上主機限制,可以限制成本地、某個IP、某個IP段、以及任何地方等。 2:如果你能連線,Mysql會檢查你發出的每個請求,看你是否有足夠的許可權。 mysql 許可權如下: 許可權 許可權級

MySQL許可權管理(mysql.user表詳解)

INSERTINTO `user`(`Host`,`User`,`Password`,`Select_priv`,`Insert_priv`,`Update_priv`,`Delete_priv`,`Create_priv`,`Drop_priv`,`Reload_priv`,`Shutdown_priv`,

yii2搭建完美后臺並實現rbac許可權控制案例--左側選單子無法高亮的問題

新增角色是屬於角色這個選單的,如何在執行新增角色這個操作時讓角色這個選單處於選中狀態呢?adminlte左側導航的Create,View等action不能定位到index的模組(左側二級導航不能展開定位)如果你是按照我們上文的教程來的,那接下來所要說明的問題應該不是問題,先

MySQL學習:使用者管理(新增使用者,刪除使用者,新增許可權,檢視許可權,密碼等)

什麼是規劃? 資料庫物件與資料庫使用者賬戶的相關聯 1. 新建用於規劃 CREATE SCHEMA [SCHEMA_NAME] [USER_ID] [ ]; 2. 刪除規劃 DROP SCHEMA SCHEMA_NAME {RESTRICT | CASCADE} 3. 調整

C++精進(十)―封裝、繼承、多型及訪問許可權及物件建立詳解

         面向物件的三個基本特徵是:封裝、繼承、多型。其中,封裝可以隱藏實現細節,使得程式碼模組化;繼承可以擴充套件已存在的程式碼模組(類);它們的目的都是為了——程式碼重用。而多型則是為了實現另一個目的——介面重用!                        

sed和awksed(含sed高用法)

清空 pre 需要 amp 打印 多條 邏輯 help n) (原創文章,謝絕轉載~) sed(stream editor)和 awk 是linux環境下處理文本、數據的強大“利器”,sed對數據列的處理稍遜,awk則更似一門語言,control flow的語法基本和c語言

mysql數據庫-查詢優化索引

mys 結構 details 速查 dex 主鍵 alt key 數據結構 定義:是數據庫中專門用於幫助用戶快速查詢數據的一種數據結構。類似於字典中的目錄,查找字典內容時可以根據目錄查找到數據的存放位置,然後直接獲取即可。 分類:普通索引,唯一性索引,全文索引,單列索引,多

PythonWeb全棧工程師必備技能<MySQL開發>

MySQL 數據庫 Python開發 emmm...接下來還有<MySQL運維篇>...(1)數據庫的CURD:--基本使用:1.選擇數據庫: use 數據庫名稱;mysql> use test;Database changed2.創建數據庫: create dat

mysql給資料庫授權與收回許可權--------dcl

使用者授權語法 grant 許可權1,許可權2... on 資料庫名.* to 使用者名稱 @IP地址或%   開啟新建立的名為“test”的資料庫後   用 show databases;  的命令 看內部的資料結果如下圖,其實在名為test的資料庫中 還有更多的資料庫

mysql 開發進階系列 51 許可權與安全(許可權表user,db詳細介紹 )

一.概述   mysql 的許可權系統主要用來對連線到資料庫的使用者進行許可權驗證,以此來判斷此使用者是否屬於合法使用者,以及合法使用者給予的相應資料庫許可權。下面將介紹許可權系統的工作原理,以及將要熟練掌握賬號的管理和使用方法(mysql版本 5.7)。   1.1  許可權系統的

Django 許可權管理的外掛

   一、功能分析: 一個成熟的web應用,對許可權的控制、管理是不可少的;對於一個web應用來說是什麼許可權? 這要從web應用的使用說起,使用者在瀏覽器輸入一個url,訪問server端,server端返回這個url下對應的資源; 所以 對於使用者來說 1個可以訪問url 就等於1個許可權

Linux指令許可權

許可權的基本介紹: 1.rwx許可權詳解: (1)rwx作用到檔案 ①r:表示可讀:可以讀取,檢視 ②w:表示可寫:可以修改,但是不代表可以刪除該檔案,刪除一個檔案的前提條件是對該檔案所在的目錄有寫許可權,才能刪除該檔案。 ③x:表示可執行:可以被執行 (2)rwx作用到目錄 ①r:表示可

Android許可權(permission)大全

一、說明 Android 6.0開始,Google將許可權分為兩類,一類是Normal Permission, 這類許可權一般不涉及使用者隱私,是不需要使用者進行授權的,比如手機震動、訪問網路等;另一類是Dangerous Permission,一般是涉及到使用者隱私的,需要使用者進行授權,比如

Linux基礎許可權操作

Linux許可權管理是Linux中一個十分重要的概念,也是系統安全性的重要保障。這裡主要介紹Linux的基本許可權和預設許可權,通過理論講解與實驗演示,可以詳細瞭解到許可權的相關操作及其重要性。 檔案許可權 [[email protected] ~]# ls -l /etc/passwd-rw-