mysql 用戶權限管理

mysql使用系統庫mysql的user表來存儲用戶信息。mysql.user表詳細的記錄了用戶名,對應的允許連接的主機信息還有各種全局權限標識位。

用戶管理

創建用戶
CREATE USER '用戶名'@'host主機' IDENTIFIED BY '密碼';

上面是創建用的基本命令,指定了用戶名,密碼和允許連接的主機。其中host如果設置為localhost,則是只允許本機連接,不允許遠程連接。如果開放遠程連接可以使用’%‘(允許所有主機連接)。一般root用戶不開啟遠程連接為好。也可以使用通配符,如’192.168.10.%’

關于密碼,以前的版本可以使用PASSWORD(‘密碼’)函數來設置密碼,該函數已經被標記為過時,且在mysql8中被刪除了,盡量直接使用密碼明文即可,下面的auth plugin會自動進行密碼的加密。

除了基本信息外,還可以有其它選項進行賬號屬性設置

1、設置密碼校驗插件(auth plugin)
CREATE USER 'jeffrey'@'localhost'IDENTIFIED WITH caching_sha2_password BY 'password'

密碼的存儲都是密文,在密碼加密過程中可以指定密碼認證插件,使用上面的IDENTIFIED WITH語句來明確指定認證插件,其中caching_sha2_password就是一種認證方式。mysql有多個認證插件,在MySQL 8.0.27之前的版本,使用default_authentication_plugin變量來定義默認的認證插件

5.7

mysql> SELECT @@default_authentication_plugin;
+---------------------------------+
| @@default_authentication_plugin |
+---------------------------------+
| mysql_native_password           |
+---------------------------------+

8.0

mysql> SELECT @@default_authentication_plugin ;
+---------------------------------+
| @@default_authentication_plugin |
+---------------------------------+
| caching_sha2_password           |

對于mysql5.7默認的認證插件方式是mysql_native_password,對于8.0版本新增了一個caching_sha2_password作為默認認證插件。

2、設置密碼過期時間
CREATE USER 'jeffrey'@'localhost' PASSWORD EXPIRE INTERVAL 180 DAY;

使用PASSWORD EXPIRE語句來指定密碼的有效期,像上面的INTERVAL 180 DAY就是180天后過期。

如果沒有明確指定密碼過期策略,默認使用default_password_lifetime指定值來確認密碼過期方式。

mysql> select @@default_password_lifetime;
+-----------------------------+
| @@default_password_lifetime |
+-----------------------------+
|                           0 |

default_password_lifetime默認值是0表示永遠不過期,如果指定一個大于0的值,代表多少天后過期。

密碼過期有以下常見格式:

1、PASSWORD EXPIRE

后面沒有任何參數,密碼立即過期。這樣可以創建一個不能登錄的賬號

2、PASSWORD EXPIRE DEFAULT

使用默認的過期策略,也就是default_password_lifetime指定的方式

3、PASSWORD EXPIRE NEVER

永不過期

4、PASSWORD EXPIRE INTERVAL N DAY

N天后過期

3、鎖定用戶
CREATE USER test@'%' ACCOUNT LOCK;

鎖定的用戶,客戶端登錄會報:Error number: 3118; Symbol: ER_ACCOUNT_HAS_BEEN_LOCKED; SQLSTATE: HY000 . Account is locked.錯誤。

4、訪問資源限制
CREATE USER 'jeffrey'@'localhost'WITH MAX_QUERIES_PER_HOUR 500 MAX_UPDATES_PER_HOUR 100 MAX_USER_CONNECTIONS 10;
  • MAX_USER_CONNECTIONS

當前用戶最大允許創建連接數,默認值使用max_user_connections變量,變量值為0表示不限制。

  • MAX_CONNECTIONS_PER_HOUR ,MAX_QUERIES_PER_HOUR,MAX_UPDATES_PER_HOUR

這三個參數限制了每小時連接數、查詢數和更新數。

用戶修改

用戶的修改要素和create語句是一樣的,只不過語句變成了ALTER.如下:

ALTER USER 'jeffrey'@'localhost'IDENTIFIED WITH sha256_password BY 'new_password'PASSWORD EXPIRE INTERVAL 180 DAY;

修改用戶時:用戶名和host組成了條件信息。

用戶刪除
DROP USER 'jeffrey'@'localhost';

如果不指定host,默認刪除host值為’%'的記錄。

權限管理

權限分類

數據庫有很多中權限,按照作用范圍不同大致可以分為以下幾種權限:

全局權限

ALL [PRIVILEGES]:所有的權限

SHOW DATABASES:使用SHOW DATABASES 命令查看數據庫列表權限

PROCESS:允許使用SHOW PROCESSLIST查看所有進程權限

SHUTDOWN:允許使用mysqladmin shutdown命令關閉數據庫權限

FILE:允許文件操作權限,像select into outfile,load data infile等都需要該權限

CREATE USER:允許CREATE USER, DROP USER, RENAME USER, and REVOKE ALL PRIVILEGES操作

REPLICATION SLAVE:允許用戶讀取binlog進行主從復制

REPLICATION CLIENT:允許查看復制狀態,像show master status,show slave status,show binary logs命令

SUPER:超級權限,允許執行一系列數據庫管理命令,像CHANGE MASTER TO, KILL, PURGE BINARY LOGS, SET GLOBAL, and mysqladmin等命令

RELOAD:允許執行flush命令

CREATE TABLESPACE:表空間管理權限

GRANT OPTION:分配權限操作

數據庫對象操作權限:

CREATE VIEW:創建視圖權限

SHOW VIEW:使用SHOW CREATE VIEW查看視圖權限

TRIGGER:觸發器操作權限

CREATE ROUTINE:創建存儲過程和函數權限

ALTER ROUTINE:修改存儲過程和函數權限

EXECUTE:執行存儲過程和函數權限

INDEX:索引操作權限

CREATE TEMPORARY TABLES:創建臨時表權限

CREATE:創建數據庫,創建表權限

ALTER:修改表操作

DROP:刪除數據庫、表、視圖,truncate table等權限

LOCK TABLES:鎖表權限

表數據操作權限:

INSERT:插入數據權限,ANALYZE TABLE, OPTIMIZE TABLE操作也需要該權限

DELETE:刪除數據

SELECT:查詢權限

UPDATE:更新數據權限

更多權限可以查看官方網站 privileges-provided

權限分配

權限的分配使用GRANT語句

GRANT priv_type...  ON [object_type] priv_level TO user

priv_type是權限列表,多個用英文逗號相隔

object_type:對象范圍,可以是數據庫,表,存儲過程等。

#全局級別
GRANT ALL ON *.* TO 'someuser'@'somehost';
#數據庫級別
GRANT SELECT, INSERT ON mydb.* TO 'someuser'@'somehost';
#表級別
GRANT SELECT, INSERT ON mydb.mytbl TO 'someuser'@'somehost';
#列級別
GRANT SELECT (col1), INSERT (col1, col2) ON mydb.mytbl TO 'someuser'@'somehost';
#ROUTINE
GRANT CREATE ROUTINE ON mydb.* TO 'someuser'@'somehost';

被grant分配后的權限,根據權限類型的不同存儲在系統庫不同的表中:

全局權限存儲在:sys.user表中

數據庫級別權限存儲在:mysql.db表中

表級權限存儲在:mysql.tables_priv表

列級別存儲在:mysql.columns_priv表

ROUTINE類型存儲在mysql.procs_priv。

user需要用戶名和host兩部分表示,格式是 username@host。host同創建用戶時host,username可以是空表示給所有用戶賦通用權限。

例:

#將db1數據庫所有權限賦給用戶
GRANT ALL ON db1.* TO 'jeffrey'@'localhost';
#將db2庫invoice對象的查詢權限賦給用戶
GRANT SELECT,INSERT ON db2.invoice TO 'jeffrey'@'localhost';
權限回收

權限的回收使用REVOKE語句,revoke語法幾乎和grant一致,只是grant改成了revoke。

REVOKE INSERT ON *.* FROM 'jeffrey'@'localhost';
權限查詢

使用show grants可以查看分配的用戶權限,如果要查特定用戶的可以使用for user來指定

SHOW GRANTS;
SHOW GRANTS FOR CURRENT_USER;
SHOW GRANTS FOR CURRENT_USER();
SHOW GRANTS FOR 'jeffrey'@'localhost';

在grant或revoke修改了權限后,一般會使用FLUSH PRIVILEGES命令使權限生效。FLUSH PRIVILEGES會從新加載系統權限表數據到內存。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/697893.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/697893.shtml
英文地址,請注明出處:http://en.pswp.cn/news/697893.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Selenium基礎知識

一、環境搭建(以java為例) 1.下載chrome瀏覽器 https://www.google.cn/intl/zh-CN/chrome/ 2.查看chrome瀏覽器版本 設置關于chrome 3.下載chrome瀏覽器驅動 下載瀏覽器對應版本的 ChromeDriver - WebDriver for Chrome - Downloads 120以上版本&…

WordPress使用

WordPress功能菜單 儀表盤 可以查看網站基本信息和內容。 文章 用來管理文章內容,分類以及標簽。編輯文章以及設置分類標簽,分類和標簽可以被添加到 外觀-菜單 中。 分類名稱自定義;別名為網頁url鏈接中的一部分,最好別設置為中文…

概率密度函數(PDF)與神經網絡中的激活函數

原創:項道德(daode3056,daode1212) 在量子力學中,許多現象都是統計的結果,基本上用的是正態分布,然而,從本質上思考,應該還存在低階的分布,標準的正態分布是它的極限,這樣一來,或許在…

python中多線程使用

前言 記錄下Python中多線程使用 標題 前言簡介使用demo 簡介 Python 中的多線程主要通過 threading 模塊來實現。多線程是一種并發編程的方式,允許程序在同一時間執行多個線程,每個線程執行不同的任務。然而需要注意的是,在 Python 中由于 …

【前端素材】推薦優質后臺管理系統Spica Admin平臺模板(附源碼)

一、需求分析 后臺管理系統是一種用于管理網站、應用程序或系統的工具,它通常作為一個獨立的后臺界面存在,供管理員或特定用戶使用。下面詳細分析后臺管理系統的定義和功能: 1. 定義 后臺管理系統是一個用于管理和控制網站、應用程序或系統…

【安全】大模型安全綜述

大模型相關非安全綜述 LLM演化和分類法 A survey on evaluation of large language models,” arXiv preprint arXiv:2307.03109, 2023.“A survey of large language models,” arXiv preprint arXiv:2303.18223, 2023.“A survey on llm-gernerated text detection: Necess…

刷題日記-Day1- Leedcode-704. 二分查找,27. 移除元素-Python實現

704 二分查找 鏈接:https://leetcode.cn/problems/binary-search/description/ 給定一個 n 個元素有序的(升序)整型數組 nums 和一個目標值 target ,寫一個函數搜索 nums 中的 target,如果目標值存在返回下標&#xf…

vue3 toRefs之后的變量修改方法

上效果 修改值需要帶上解構之前的對象名obj&#xff0c; changeName:()>{ // toRefs 解決后變量修改值方法&#xff1a; 解構前變量.字段新值 obj.name FEIFEI; } } 案例源碼 <!DOCTYPE html> <html> <head><me…

如何在pgAdmin中用替換的值更新jsonb列?

我有一個名為files的PostgreSQL表&#xff0c;其中包括一個名為formats的jsonb表。雖然有些行是[null]&#xff0c;但其他行具有此結構的對象&#xff1a; {"thumbnail": {"ext": ".jpg","url": "https://some-url.com/image01.…

Vue | (四)使用Vue腳手架(上) | 尚硅谷Vue2.0+Vue3.0全套教程

文章目錄 &#x1f4da;初始化腳手架&#x1f407;創建初體驗&#x1f407;分析腳手架結構&#x1f407;關于render&#x1f407;查看默認配置 &#x1f4da;ref與props&#x1f407;ref屬性&#x1f407;props配置項 &#x1f4da;混入&#x1f4da;插件&#x1f4da;scoped樣…

idea配置javafx

一、下載sdk 在jdk8之后,需要下載sdk包 ??javafx-sdk-18.zip 這里適用的jkd版本如圖 二、配置 創建一個項目之后,進行如下配置,將sdk導入到項目中 配置啟動參數 可以使用-號將之前的去掉&

同步 BUCK 與 異步 BUCK 的區別

上篇文章介紹 BUCK 基本拓撲電路工作原理&#xff0c;BUCK 電路如下圖&#xff1a; 因為二極管的存在&#xff0c;只需要控制一個 MOS 管開關&#xff0c;一般將該電路稱為異步 BUCK 電路&#xff0c;如果把這個二極管換為 MOS 管&#xff0c;如下圖&#xff1a; 該電路用到了兩…

vue Threejs實現任意畫線(鼠標點擊畫線)

Threejs實現任意畫線(鼠標點擊畫線) 鼠標左鍵單擊添加點鼠標右鍵回退到上一個點,并繼續畫按住shift可以畫平行于x軸或平行于z軸的線按Esc完成畫線

【leetcode題解C++】121.買賣股票的最佳時機 and 122.買賣股票的最佳時機II and 55.跳躍游戲 and 45.跳躍游戲II

121. 買賣股票的最佳時機 給定一個數組 prices &#xff0c;它的第 i 個元素 prices[i] 表示一支給定股票第 i 天的價格。 你只能選擇 某一天 買入這只股票&#xff0c;并選擇在 未來的某一個不同的日子 賣出該股票。設計一個算法來計算你所能獲取的最大利潤。 返回你可以從…

汽車信息安全概述

隨著智能網聯汽車的迅猛發展&#xff0c;車輛不再是簡單的交通工具&#xff0c;而是集數據收集、處理與通信于一體的移動智能終端。然而&#xff0c;這一變革也使得汽車成為黑客攻擊的新目標。汽車信息安全問題日益凸顯&#xff0c;成為行業關注的焦點。本文將深入探討汽車信息…

前后端分離vscode保險業務管理系統vue+Nodejs

本設計主要應用于完成對保險業務進行計算機化的管理。系統前臺展示各種種類的保險&#xff0c;顧客可以選擇登陸后買入。公司員工為管理員&#xff0c;由公司統一分配賬號&#xff0c;員工用工號密碼登陸。可以修改密碼&#xff0c;查看、修改自己的信息。員工可處理顧客信息。…

企微hook框架

https://wwm.lanzoum.com/ipUTp1ot1twh 密碼:hvev 免費的企微框架 支持文本消息&#xff0c;圖片消息&#xff0c;視頻消息&#xff0c;文件消息。 其他可自行下載測試。 有興趣可以進群交流。720192224 BOOL WxWorkSendData(string data) { WX_GETOBJDATA ob…

1.CSS單位總結

CSS 單位總結 經典真題 px 和 em 的區別 CSS 中的哪些單位 首先&#xff0c;在 CSS 中&#xff0c;單位分為兩大類&#xff0c;絕對長度單位和相對長度單位。 絕對長度單位 我們先來說這個&#xff0c;絕對長度單位最好理解&#xff0c;和我們現實生活中是一樣的。在我們…

Windows sever Event 70117000事件日志

背景&#xff1a;Windows server2008 頻繁藍屏&#xff0c;日志報錯信息時間ID&#xff1a;7011&7000&#xff0c;Service Control Manager 原因&#xff1a;Service Control Manager transmits control requests to running services and driver services. It also maint…

mysql-MVCC

一、基礎概念 1. MVCC的含義 MVCC (Multiversion Concurrency Control)&#xff0c;即多版本并發控制技術&#xff0c;它是通過讀取某個時間點的快照數據&#xff0c; 來降低并發事務沖突而引起的鎖等待&#xff0c; 從而提高并發性能的一種機制. MVCC 的實現,是通過保存數據…