1. 程式人生 > >grant授權和revoke回收許可權

grant授權和revoke回收許可權

在mysql維護工作中,做好許可權管理是一個很重要的環節。下面對mysql許可權操作進行梳理:

mysql的許可權命令是grant,許可權撤銷的命令時revoke;
grant授權格式:grant 許可權列表 on 庫.表 to 使用者名稱@'ip' identified by "密碼";
revoke回收許可權格式:revoke 許可權列表 on 庫.表 from 使用者名稱@'ip';

下面通過一些例子說明:
1.grant授權
1)grant 普通資料使用者,查詢、插入、更新、刪除 資料庫中所有表資料的權利。

1 2 3 4 mysql> grantall on *.*
to [email protected]'192.168.1.150'identified by "password";           //all等同於allprivilege,其中的privileges可以省略 mysql> grantall privileges on *.* to [email protected]'192.168.1.%' identified by "123456";    //192.168.1.%表示一個網段 mysql> grantinsert,select,update,delete,drop,create,alteron huanqiu.*
to[email protected]'%' identified by "123456"; mysql> flush privileges      //授權之後,不要忘記更新許可權表

2.檢視許可權
1)檢視當前使用者下所有的許可權

1 2 3 4 5 6 7 8 mysql> show grants; +----------------------------------------------------------------------------------------------------------------------------------------+
| Grants for[email protected]                                                                                                              | +----------------------------------------------------------------------------------------------------------------------------------------+ | GRANTALL PRIVILEGES ON *.* TO 'root'@'localhost'IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9'WITH GRANT OPTION | | GRANTPROXY ON ''@'' TO 'root'@'localhost'WITH GRANT OPTION                                                                          | +----------------------------------------------------------------------------------------------------------------------------------------+ 2 rowsin set (0.00 sec)

2)檢視指定使用者下的所有許可權
USAGE是預設的初始狀態,表示無任何許可權!!
下面表示wang使用者在192.168.1.0/24網段登陸本機mysql後,對huanqiu庫下的所有表有insert,update,alter,delete,create,select的操作許可權!

1 2 3 4 5 6 7 8 mysql> show grants for [email protected]'192.168.1.%';           //可以在selectuser,host,passwordfrom mysql.user執行結果中找對應的許可權使用者資訊 +---------------------------------------------------------------------------------------------------------------+ | Grants for[email protected]%                                                                                   | +---------------------------------------------------------------------------------------------------------------+ | GRANTUSAGE ON *.* TO 'wang'@'192.168.1.%'IDENTIFIED BY PASSWORD '*678E2A46B8C71291A3915F92736C080819AD76DF'| | GRANTSELECT, INSERT,UPDATE, DELETE,CREATE, ALTERON `huanqiu`.* TO'wang'@'192.168.1.%'                   | +---------------------------------------------------------------------------------------------------------------+ 2 rowsin set (0.00 sec)

3.revoke撤銷許可權
revoke跟grant語法差不多,只需要把關鍵字 “to” 換成 “from” 即可,並且revoke語句中不需要跟密碼設定。
注意:revoke可以回收所有許可權,也可以回收部分許可權。

1 2 3 4 mysql> revokeall on *.* from [email protected]'192.168.1.150';                   mysql> revokeall privileges on *.* from[email protected]'192.168.1.%';               mysql> revokeinsert,select,update,delete,dropcreatealteron huanqiu.* from[email protected]'%'; mysql> flush privileges   

注意事項:
1)grant, revoke使用者許可權後,該使用者只有重新連線MySQL資料庫,許可權才能生效。
2)如果想讓授權的使用者,也可以將這些許可權grant給其他使用者,那麼授權時需新增選項 "grant option"!
如下設定後,那麼這個wang使用者連線mysql後也可以將這些許可權授予其他使用者。

1 mysql> grantinsert,select,update,alteron huanqiu.* to[email protected]'%' identified by "123456"with grant option;

-------------------------------------------------------------------------------------------------------------------
mysql授權表一共涉及到5個表,分別是user、db、host、tables_priv和columns_priv。
這5張表的內容和用途如下:
1)user表
user表列出可以連線伺服器的使用者及其口令,並且它指定他們有哪種全域性(超級使用者)許可權。在user表啟用的任何許可權均是全域性許可權,並適用於所有資料庫。例如,如果你啟用了DELETE許可權,在這裡列出的使用者可以從任何表中刪除記錄,所以在你這樣做之前要認真考慮。

2)db表
db表列出資料庫,而使用者有許可權訪問它們。在這裡指定的許可權適用於一個數據庫中的所有表。

3)host表
host表與db表結合使用在一個較好層次上控制特定主機對資料庫的訪問許可權,這可能比單獨使用db好些。這個表不受GRANT和REVOKE語句的影響,所以,你可能發覺你根本不是用它。

4)tables_priv表
tables_priv表指定表級許可權,在這裡指定的一個許可權適用於一個表的所有列。

5)columns_priv表
columns_priv表指定列級許可權。這裡指定的許可權適用於一個表的特定列。
------------------------------------------------------------------------------------------------------------------
看下面一個例項:
給wang使用者授權的許可權太大了,現在要收回部分許可權,只留給wang使用者select和alter的許可權。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 mysql> show grants for [email protected]'192.168.1.%'; +---------------------------------------------------------------------------------------------------------------+ | Grants for[email protected]%                                                                                   | +---------------------------------------------------------------------------------------------------------------+ | GRANTUSAGE ON *.* TO 'wang'@'192.168.1.%'IDENTIFIED BY PASSWORD '*678E2A46B8C71291A3915F92736C080819AD76DF'| | GRANTSELECT, INSERT,UPDATE, DELETE,CREATE, ALTERON `huanqiu`.* TO'wang'@'192.168.1.%'                   | +---------------------------------------------------------------------------------------------------------------+ 2 rowsin set (0.00 sec) mysql> revokeinsert,update,delete,createon huanqiu.* from[email protected]'192.168.1.%'; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> show grantsfor [email protected]'192.168.1.%'; +---------------------------------------------------------------------------------------------------------------+ | Grants for[email protected]%                                                                                   | +---------------------------------------------------------------------------------------------------------------+ | GRANTUSAGE ON *.* TO 'wang'@'192.168.1.%'IDENTIFIED BY PASSWORD '*678E2A46B8C71291A3915F92736C080819AD76DF'| | GRANTSELECT, ALTERON `huanqiu`.* TO'wang'@'192.168.1.%'                                                   | +---------------------------------------------------------------------------------------------------------------+ 2 rowsin set (0.00 sec)

發現revoke回收許可權操作後,只剩下select和alter許可權了。
revoke回收部分許可權,剩下的許可權的密碼保持不變。

這裡特別注意下:
如果給一個使用者設定的許可權過大,除了上面使用revoke回收部分許可權外,還可以使用grant進行許可權修改!
也就是說,grant不僅可以新增許可權,也可以修改許可權(實際上就是對同一'使用者名稱'@'ip'設定許可權,以覆蓋之前的許可權);
grant修改後的許可權將覆蓋之前的許可權!
那麼問題來了:授權後的密碼是密文形式儲存的,如果記不住之前授權時的密碼,那麼怎樣保證覆蓋後的許可權跟之前的許可權一致?

莫慌!
grant授權操作中其實不僅可以設定明文密碼,也可以設定密文密碼,如下:
1)grant 許可權列表 on 庫.表.* to 使用者名稱@'ip' identified by "明文密碼"
2)grant 許可權列表 on 庫.表.* to 使用者名稱@'ip' identified by password "密文密碼"

也就是說:
在grant重置許可權的時候可以用檢視的密文密碼當做新的密碼,然後去覆蓋之前的許可權,這就保證了修改前後的密碼一致!
如上的例子,採用grant的操作如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 mysql> show grants for [email protected]'192.168.1.%'; +---------------------------------------------------------------------------------------------------------------+ | Grants for[email protected]%                                                                                   | +---------------------------------------------------------------------------------------------------------------+ | GRANTUSAGE ON *.* TO 'wang'@'192.168.1.%'IDENTIFIED BY PASSWORD '*678E2A46B8C71291A3915F92736C080819AD76DF'| | GRANTSELECT, INSERT,UPDATE, DELETE,CREATE, ALTERON `huanqiu`.* TO'wang'@'192.168.1.%'                   | +---------------------------------------------------------------------------------------------------------------+ 2 rowsin set (0.00 sec) mysql> grantalter,selecton huanqiu.* to[email protected]'192.168.1.%'identified by password '*678E2A46B8C71291A3915F92736C080819AD76DF'; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> show grantsfor [email protected]'192.168.1.%'; +---------------------------------------------------------------------------------------------------------------+ | Grants for[email protected]%                                                                                   | +---------------------------------------------------------------------------------------------------------------+ | GRANTUSAGE ON *.* TO 'wang'@'192.168.1.%'IDENTIFIED BY PASSWORD '*678E2A46B8C71291A3915F92736C080819AD76DF'| | GRANTSELECT, ALTERON `huanqiu`.* TO'wang'@'192.168.1.%'                                                   | +---------------------------------------------------------------------------------------------------------------+ 2 rowsin set (0.00 sec)

通常開發同事在讓運維同事開通mysql許可權時,他們會在自己本地mysql裡生成一個密文密碼,然後把這個密文密碼給運維同事,運維同事在用這個密文密碼進行授權,
那麼授權的密碼就只有開發同事自己知道了,其他人都不知道!比較安全的一種做法~

資料庫/資料表/資料列許可權:

Alter: 修改已存在的資料表(例如增加/刪除列)和索引。
Create: 建立新的資料庫或資料表。
Delete: 刪除表的記錄。
Drop: 刪除資料表或資料庫。
INDEX: 建立或刪除索引。
Insert: 增加表的記錄。
Select: 顯示/搜尋表的記錄。
Update: 修改表中已存在的記錄。

全域性管理MySQL使用者許可權:

file: 在MySQL伺服器上讀寫檔案。
PROCESS: 顯示或殺死屬於其它使用者的服務執行緒。
RELOAD: 過載訪問控制表,重新整理日誌等。
SHUTDOWN: 關閉MySQL服務。

特別的許可權:

ALL: 允許做任何事(和root一樣)。
USAGE: 只允許登入--其它什麼也不允許做。


相關推薦

grant授權revoke回收許可權

在mysql維護工作中,做好許可權管理是一個很重要的環節。下面對mysql許可權操作進行梳理: mysql的許可權命令是grant,許可權撤銷的命令時revoke; grant授權格式:grant 許可權列表 on 庫.表 to 使用者名稱@'ip' identified

Grant授權revoke取消授權

Oracle學習筆記一 終於開始學習oracle了,在電腦上成功安裝了oracle9i  今天學習的是oracle的許可權管理  首先在開始--》執行——》cmd,然後輸入 sqlplus sys/密碼 as sysdba  以sys許可權登陸進去  然後可以進行操作

Oracle常見授權回收許可權——grantrevoke

1.GRANT 賦於許可權 常用的系統許可權集合有以下三個: CONNECT(基本的連線), RESOURCE(程式開發), DBA(資料庫管理) 常用的資料物件許可權有以下五個: ALL ON 資料物件名, SELECT ON&n

資料庫授權回收許可權 grantrevoke

  Oracle常見授權與回收許可權——grant和revoke 1.GRANT 賦於許可權 常用的系統許可權集合有以下三個: CONNECT(基本的連線), RESOURCE(程式開發), DBA(資料庫管理) 常用的資料物件許可權有以下五個: AL

數據庫常用授權授權回收參數配置

mariadb標題索引官方幫助常用案例官方幫助 在使用數據庫時必不可少的即是查看help幫助,通過help幫助再次尋找常用命令及參數,如下為help grant信息:MariaDB [(none)]> help grant; Name: 'GRANT' Description: S

oracle使用者建立、授權許可權設定(關於Oracle許可權2)

許可權: create session create table unlimited tablespace connect resource dba 例: #sqlplus /nolog SQL> conn / as sysdba; SQL>

spring boot 整合shiro(使用者授權許可權控制)

(1) pom.xml中新增Shiro依賴 <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId>

MySql授權撤銷許可權操作

MySQL 賦予使用者許可權命令的簡單格式可概括為: grant 許可權 on 資料庫物件 to 使用者 grant 許可權 on 資料庫物件 to 使用者 一、grant 普通資料使用者,查詢、插入、更新、刪除 資料庫中所有表資料的權利 grantselecton 

資料庫系統概論04-資料庫角色授權回收&斷言&屬性上的約束條件&觸發器&正規化

資料庫角色授權和回收 角色的建立:CREATE ROLE 角色名 給角色授權:GRANT 許可權 ON 角色 TO 使用者 WITH GRANT OPTION(表示可以將許可權授予其他使用者) 角色授權的回收:REVOKE  許可權 ON 物件型別 物件名 FROM 角

mysql 授權回收許可權

授權:授權的關鍵字是grant,使用grant···to··· 授權 1. 給使用者 授權 grant all privileges on *.* to root; 2. 給某個ip授權,使指定ip

微信公眾號用java中控伺服器-實現使用者網頁授權獲取使用JS-SDK許可權

一、網頁授權,是指使用者點選微信公眾號裡的自定義選單在開啟頁面中獲取授權使用者資訊,可以用來實現免登入。 下圖是需要引導使用者點開的地址其中redirect_uri=指向你真正要跳轉的地址,比如可以在自定義選單跳轉地址中改成這種地址形式,就可以在頁面中獲取到位

四.Jenkins的授權訪問控制

區別 ima 配置 項目 uil build 存在 檢查 lob 默認的Jenkins不包含任何的安全檢查,任何人可以修改Jenkins設置,job和啟動build等。在多人使用的時候,顯然會存在比較大的安全風險,所以需要配置Jenkins的授權和訪問控制。 【系統管理】-

JVM內存管理機制垃圾回收機制

mark 代碼 本地方法棧 final類 boot 存取 帶來 logs byte JVM自身結構物理圖: Java代碼編譯和執行的整個過程包含了以下三個重要的機制: 1.java源碼編譯機制 1)分析和輸入到符號表 class文件結構包含: 結構

微信第三方登錄與靜默授權非靜默授權

網頁 簡單 關註 三方 裏的 信息 是否 登錄 授權 微信的授權登錄在日常應用中應用的非常廣泛,最多就是第三方登錄 微信登錄分為兩類:授權登錄(非靜默授權)與靜默授權 授權登錄:需要用戶確認登錄,這樣可以通過用戶的個人確認,獲取用戶全面的信息,無論是否關註相關微信公眾號等都

[轉] javascript中的變量垃圾回收

tor 們的 問題 只有一個 次數 ie9 內存 通過 保持 [From] http://www.imooc.com/article/4585 基本類型和引用類型 js中的變量雖然不區分類型,但是實際上Ecmascript包含兩種類型,基本類型和引用類型. 基本類型有5

C#內存管理垃圾回收機制

委托 釋放 strong 實時性 作用 集成 一定的 簡介 box 數據類型 垃圾回收機制 一、數據類型 C#中的數據類型分為值類型 (Value type) 和引用類型(reference type), 值 類 型: 所有的值類型都集成自 System.ValueT

DNS的主從、子域授權轉發服務器

還需 class bind name 多個 放置 dnssec 時間 rst DNS的主從、子域授權和轉發服務器 主從DNS 註意: 1.全局配置options{} 裏面的內容,其中 listen-on port 53 {an

手把手實現微信網頁授權微信支付,附源代碼(VUE and thinkPHP)

nec ble 名單 ret 一次 hash 掃一掃 網頁 ada wechat github 手把手實現微信網頁授權和微信支付,附源代碼(VUE and thinkPHP) 概述 公眾號開發是痛苦的,痛苦在好多問題開發者文檔是沒有提到的,是需要你猜的. 在開發過程中翻

數據庫grant 授權

mysql命令 權限usage 無權限SELECT 查詢表記錄INSERT 插入表記錄UPDATE 更新表記錄DELETE 刪除表記錄CREATE 創建庫、表DROP 刪除庫、表RELOAD 有重新載入授權 必須擁有reloa

清理:處理終結垃圾回收

首先,Java也有垃圾收集器,且回收不在使用的物件佔據的記憶體,但有一種特殊的情況-------沒有使用new,但垃圾收集器只知道釋放由new分配的記憶體,此時就需要用到finalize()方法。 在理想情況下,它的工作原理應該是這樣的:一旦垃圾收集器準備好釋放物件佔用的儲存空間,它首先呼叫fi