MySQL 的 GRANT和REVOKE 命令

来源:https://www.cnblogs.com/librarookie/archive/2022/04/18/16160252.html
-Advertisement-
Play Games

MySQL 的 GRANT和REVOKE 命令 GRANT - 授權 將指定 操作對象 的指定 操作許可權 授予指定的 用戶; 發出該 GRANT語句的可以是資料庫管理員,也可以是該資料庫對象的創建者; 查詢 查看用戶自己許可權 SHOW GRANTS; 查看其他用戶許可權 SHOW GRANTS FOR ...


MySQL 的 GRANT和REVOKE 命令



GRANT - 授權

將指定 操作對象 的指定 操作許可權 授予指定的 用戶; 發出該 GRANT語句的可以是資料庫管理員,也可以是該資料庫對象的創建者;

  1. 查詢

    • 查看用戶自己許可權

      SHOW GRANTS;

    • 查看其他用戶許可權

      SHOW GRANTS FOR 'user'@'host';

    Tips: host 可以使用通配符 %;如 'user'@'%', 'user'@'192.168.0.%';

  2. 授權

    • 語法

      GRANT 許可權 ON 資料庫對象 TO 用戶 [WITH GRANT OPTION];

    • 慄子

      • 授予 super用戶所有許可權

        GRANT ALL [PRIVILEGES] ON . TO 'user'@'%';

      • 授予用戶 INSERT 許可權

        CREATE INSERT ON db_name.* TO 'user'@'%' IDENTIFIED BY 'newpasswd';

      • 授予用戶 SELECT, UPDATE, DELETE 許可權

        GRANT SELECT, UPDATE, DELETE ON db_name.* TO 'user'@'localhost'

  3. 刷新

    FLUSH PRIVILEGES;

Tips:

  • WITH GRANT OPTION: 表示是否能傳播其許可權;(授權命令是由資料庫管理員使用的)
    • 指定 WITH GRANT OPTION,則獲得該許可權的用戶可以把這種許可權授予其他用戶;但不允許迴圈傳授,即被授權者不能把許可權在授回給授權者或祖先;
    • 未指定,則獲得某種許可權的用戶只能自己使用該許可權,不能傳播該許可權;
  • GRANT 關鍵字之後指定一個或多個特權。如果要授予用戶多個許可權,則每個許可權都將以逗號分隔(見下表中的特權列表);
  • 指定確定特權應用級別的privilege_level;
    • MySQL支持全局(*.*),資料庫(database.*),表(database.table)和列級別;
    • 如果您使用列許可權級別,則必須在每個許可權之後使用逗號分隔列的列表;
  • 如果授予許可權的用戶已經存在,則GRANT語句修改其特權; 如不存在,則GRANT語句將創建一個新用戶; 可選的條件 IDENTIFIED BY 允許為用戶設置新密碼;

REVOKE - 回收授權

  • 語法

    REVOKE 許可權 ON 資料庫對象 FROM 用戶 [CASCADE | RESTRICT];

  • 慄子

    • 回收全部許可權

      REVOKE ALL [PRIVILEGES] ON . FROM 'user'@'%';

    • 回收 INSERT 許可權

      REVOKE INSERT ON db_name.* FROM 'user'@'%';

Tips:

  • CASCADE | RESTRICT 當檢測到關聯的特權時,RESTRICT(預設值) 導致REVOKE失敗;CASCADE 可以回收所有這些關聯的特權;(如U1授權U2, U2授權U3,此時使用級聯(CASCADE)收回了U2和U3的許可權,否則系統將拒絕執行該命令)

GRANT允許的特權

  • 下表說明瞭可用於GRANT和REVOKE語句的所有可用許可權:

    許可權 含義 全局 資料庫 過程 代理
    ALL [PRIVILEGES] 授予除了grant option之外的指定訪問級別的所有許可權
    ALTER 允許用戶使用alter table語句 X X X
    ALTER ROUTINE 允許用戶更改或刪除存儲程式, 可以使用{alter | drop} {procedure | unction} X X X
    CREATE 允許用戶創建資料庫和表 X X X
    CREATE ROUTINE 可以使用{create | alter | drop} {procedure | function} X
    CREATE TABLESPACE 允許用戶創建,更改或刪除表空間和日誌文件組 X
    CREATE TEMPORARY TABLES 允許用戶使用create temporary table創建臨時表 X X
    CREATE USER 允許用戶使用create user,drop user,rename user和revoke all privileges語句 X
    CREATE VIEW 允許用戶創建或修改視圖 X X X
    DELETE 允許用戶使用delete X X X
    DROP 允許用戶刪除資料庫,表和視圖 X X X
    EVENT 能夠使用事件計劃的事件 X X
    EXECUTE 允許用戶執行存儲過程/存儲函數 X X
    FILE 允許用戶讀取資料庫目錄中的任何文件 X
    GRANT OPTION 允許用戶有權授予或撤銷其他帳戶的許可權 X X X X X
    INDEX 允許用戶創建或刪除索引 X X X
    INSERT 允許用戶使用insert語句 X X X X
    LOCK TABLES 允許用戶在具有select許可權的表上使用lock tables X X
    PROCESS 允許用戶使用show processlist語句查看所有進程 X
    PROXY 啟用用戶代理
    REFERENCES 允許用戶創建外鍵 X X X X
    RELOAD 允許用戶使用flush操作 X
    REPLICATION CLIENT 允許用戶查詢主伺服器或從伺服器的位置 X
    REPLICATION SLAVE 允許用戶使用複製從站從主機讀取二進位日誌事件 X
    SELECT 允許用戶使用select語句 X X X X
    SHOW DATABASES 允許用戶顯示所有資料庫 X
    SHOW VIEW 允許用戶使用show create view語句 X X X
    SHUTDOWN 允許用戶使用mysqladmin shutdown命令 X
    SUPER 允許用戶使用其他管理操作,如change master to,kill,purge binary logs,set global和mysqladmin命令 X
    TRIGGER 允許用戶使用trigger操作 X X X
    UPDATE 允許用戶使用update語句 X X X X
    USAGE 連接(登陸)許可權(預設授予且不能被回收)

實例

用戶操作

  1. 創建用戶

    CREATE USER 'user'@'%' IDENTIFIED BY 'newpasswd';

  2. 重命名用戶

    CREATE USER 'old_user'@'%' TO 'new_user'@'%';

  3. 刪除用戶

    1. 查詢用戶

      SELECT user,host FROM mysql.user;

    2. 刪除用戶

      DROP USER 'user'@'host';

查看和刷新許可權

  • 查看許可權

    SHOW GRANTS [FOR 'user'@'host'];

  • 刷新許可權

    FLUSH PRIVILEGES;

授權與取消授權

  1. 用法

    GRANT 許可權 ON 資料庫對象 TO 用戶 [WITH GRANT OPTION];   -- 授權
    REVOKE 許可權 ON 資料庫對象 FROM 用戶 [CASCADE | RESTRICT];   -- 取消授權
    

    Tips: REVOKE 跟 GRANT 的語法差不多,只需要把關鍵字 TO 換成 FROM 即可

  2. 慄子

    • 添加許可權(和已有許可權合併,不會覆蓋已有許可權)

      -- 添加普通數據用戶,查詢、插入、更新、刪除 資料庫中所有表數據的權利
      grant select, insert, update, delete on testdb.* to common_user@'%'
      
      -- 添加資料庫開發人員,創建表、索引、視圖、存儲過程、函數。。。等許可權
      grant create, alter, drop on testdb.* to developer@'192.168.0.%';
      
      -- 添加操作 MySQL 外鍵許可權
      grant references on testdb.* to developer@'192.168.0.%';
      
      -- 添加操作 MySQL 臨時表許可權
      grant create temporary tables on testdb.* to developer@'192.168.0.%';
      
      -- 添加操作 MySQL 索引許可權
      grant index on testdb.* to developer@'192.168.0.%';
      
      -- 添加操作 MySQL 視圖、查看視圖源代碼 許可權
      grant create, show view on testdb.* to developer@'192.168.0.%';
      
    • 刪除授權

      -- 刪除普通數據用戶,查詢、插入、更新、刪除 資料庫中所有表數據的權利
      revoke select, insert, update, delete on testdb.* from common_user@'%'
      
      -- 刪除資料庫開發人員,創建表、索引、視圖、存儲過程、函數。。。等許可權
      revoke create, alter, drop on testdb.* from developer@'192.168.0.%';
      
      -- 刪除操作 MySQL 外鍵許可權
      revoke references on testdb.* from developer@'192.168.0.%';
      
      -- 刪除操作 MySQL 臨時表許可權
      revoke create temporary tables on testdb.* from developer@'192.168.0.%';
      
      -- 刪除操作 MySQL 索引許可權
      revoke index on testdb.* from developer@'192.168.0.%';
      
      -- 刪除操作 MySQL 視圖、查看視圖源代碼 許可權
      revoke create, show view on testdb.* from developer@'192.168.0.%';
      
    • DBA 許可權管理

      -- 普通 DBA 管理某個 MySQL 資料庫的許可權
      grant all [privileges] on testdb to dba@'localhost'
      
      -- 高級 DBA 管理 MySQL 中所有資料庫的許可權。
      grant all on *.* to dba@'localhost'
      
    • 細密度授權

      -- 作用在整個 MySQL 伺服器上
      grant select on *.* to dba@localhost;   -- dba 可以查詢 MySQL 中所有資料庫中的表
      grant all    on *.* to dba@localhost;   -- dba 可以管理 MySQL 中的所有資料庫
      
      -- 作用在單個資料庫上
      grant select on testdb.* to dba@localhost; -- dba 可以查詢 testdb 中的表。
      
      -- 作用在單個數據表上
      grant select, insert, update, delete on testdb.t_orders to dba@localhost;
      
      -- 作用在表中的列上
      grant select(id, username, sex) on testdb.t_user to dba@localhost;
      
    • 許可權傳播與收回

      -- 授權 dba 查詢許可權,並且可以將這些許可權 grant 給其他用戶
      grant select on testdb.* to dba@localhost with grant option;
      
      -- 收回 dba 和其傳播用戶的許可權
      revoke select on testdb.* from dba@localhost cascade;
      

    Tips: 許可權發生改變後, 需要重新載入一下許可權,將許可權信息從記憶體中寫入資料庫;



Reference


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 描述給定一個單鏈表和數值x,劃分鏈表使得所有小於x的節點排在大於等於x的節點之前。你應該保留兩部分內鏈表節點原有的相對順序。 樣例 1: 輸入: list = null x = 0 輸出: null 解釋: 空鏈表本身滿足要求 樣例 2: 輸入: list = 1->4->3->2->5->2->n ...
  • 為了寫入Bootloader, 要開啟SSH, 要開啟SSH, 就需要將小米路由器的 ROM 更新為開發版. 在小米的 miwifi 下載頁面找到路由器對應的開發版 ROM(R3G ROM 開發版). ROM 的升級有兩種方式 登陸路由器後臺線上升級 如果前一個方式不行, 可以將其拷貝到U盤根目錄... ...
  • linux伺服器網路配置 環境:ubuntu 18.04 配置IP地址 通過ifconfig命令查看網卡信息 chen@ubuntu:~$ ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.0.16. ...
  • 如果一個任務獲取信號量失敗,該任務就必須等待,直到其他任務釋放信號量。本文的重點是,在Linux中,當有任務釋放信號量之後,如何喚醒正在等待該信號量的任務。 信號量定義如下: struct semaphore { raw_spinlock_t lock; unsigned int count; st ...
  • Centos 7 開機進入選擇系統界面 按e選擇進入系統,一般預設第一個(進入系統過程中可以持續按上下鍵,避免跳過此頁面) 修改Grud 進入界面後往下找,找到以linux16開頭的一串命令,在此行末尾添加 init=/bin/bash 在同一行命令中找到ro 改成 rw 讓用戶有寫許可權,修改密碼用 ...
  • 鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站 環境需求 環境配置 ①配置靜態地址、主機名 vi /etc/sysconfig/network-scripts/ifcfg-eth0 BOOTPROTO=static IPADDR=192.168.153.70 NETMASK=255.255.2 ...
  • 針對MIPS指令集本身的講解,主要是它上層的彙編表示和下層的機器表示,以及它的訪存方式、操作數等等。同時也對MIPS指令集日落西山表示感慨。 ...
  • 安裝軟體 pacman -S (軟體名):安裝軟體,若有多個軟體包,空格分隔 pacman -S --needed (軟體名):安裝軟體,若存在,不重新安裝最新的軟體 pacman -Sy (軟體名):安裝軟體前,先從遠程倉庫下載軟體包資料庫 pacman -Sv (軟體名):輸出操作信息後安裝 p ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...