欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解MySQL 用戶權(quán)限管理

 更新時間:2021年04月19日 11:27:00   作者:MySQL技術(shù)  
這篇文章主要介紹了MySQL 用戶權(quán)限管理的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用MySQL,感興趣的朋友可以了解下

前言: 

不清楚各位同學(xué)對數(shù)據(jù)庫用戶權(quán)限管理是否了解,作為一名 DBA ,用戶權(quán)限管理是繞不開的一項工作內(nèi)容。特別是生產(chǎn)庫,數(shù)據(jù)庫用戶權(quán)限更應(yīng)該規(guī)范管理。本篇文章將會介紹下 MySQL 用戶權(quán)限管理相關(guān)內(nèi)容。

  1.用戶權(quán)限簡介

當(dāng)我們創(chuàng)建過數(shù)據(jù)庫用戶后,還不能執(zhí)行任何操作,需要為該用戶分配適當(dāng)?shù)脑L問權(quán)限。

關(guān)于 MySQL 用戶權(quán)限簡單的理解就是數(shù)據(jù)庫只允許用戶做你權(quán)利以內(nèi)的事情,不可以越界。比如只允許你執(zhí)行 select 操作,那么你就不能執(zhí)行 update 操作。只允許你從某個 IP 上連接 MySQL ,那么你就不能從除那個 IP 以外的其他機器連接 MySQL 。

在 MySQL 中,用戶權(quán)限也是分級別的,可以授予的權(quán)限有如下幾組:

  • 列級別,和表中的一個具體列相關(guān)。例如,可以使用 UPDATE 語句更新表 students 中 student_name 列的值的權(quán)限。
  • 表級別,和一個具體表中的所有數(shù)據(jù)相關(guān)。例如,可以使用 SELECT 語句查詢表 students 的所有數(shù)據(jù)的權(quán)限。
  • 數(shù)據(jù)庫級別,和一個具體的數(shù)據(jù)庫中的所有表相關(guān)。例如,可以在已有的數(shù)據(jù)庫 mytest 中創(chuàng)建新表的權(quán)限。
  • 全局,和 MySQL 中所有的數(shù)據(jù)庫相關(guān)。例如,可以刪除已有的數(shù)據(jù)庫或者創(chuàng)建一個新的數(shù)據(jù)庫的權(quán)限。

權(quán)限信息存儲在 mysql 系統(tǒng)庫的 user、db、tables_priv、columns_priv、procs_priv 這幾個系統(tǒng)表中。

  • user 表:存放用戶賬戶信息以及全局級別(所有數(shù)據(jù)庫)權(quán)限。
  • db 表:存放數(shù)據(jù)庫級別的權(quán)限,決定了來自哪些主機的哪些用戶可以訪問此數(shù)據(jù)庫。
  • tables_priv 表:存放表級別的權(quán)限,決定了來自哪些主機的哪些用戶可以訪問數(shù)據(jù)庫的這個表。
  • columns_priv 表:存放列級別的權(quán)限,決定了來自哪些主機的哪些用戶可以訪問數(shù)據(jù)庫表的這個字段。
  • procs_priv 表:存放存儲過程和函數(shù)級別的權(quán)限。

參考官方文檔,可授予的權(quán)限如下表所示:

看起來各種可授予的權(quán)限有很多,其實可以大致分為數(shù)據(jù)、結(jié)構(gòu)、管理三類,大概可分類如下:

  2.權(quán)限管理實戰(zhàn)

我們一般用 grant 語句為數(shù)據(jù)庫用戶賦權(quán),建議大家先用 create user 語句創(chuàng)建好用戶之后再單獨進行授權(quán)。下面通過示例來具體看下:

# 創(chuàng)建用戶
create user 'test_user'@'%' identified by 'xxxxxxxx';

# 全局權(quán)限
GRANT super,select on *.* to 'test_user'@'%';

# 庫權(quán)限
GRANT select,insert,update,delete,create,alter,execute on `testdb`.* to 'test_user'@'%';

# 表權(quán)限
GRANT select,insert on `testdb`.tb to 'test_user'@'%';

# 列權(quán)限
GRANT select (col1), insert (col1, col2) ON `testdb`.mytbl to 'test_user'@'%';

# GRANT命令說明:
super,select 表示具體要授予的權(quán)限。
ON 用來指定權(quán)限針對哪些庫和表。
*.* 中前面的*號用來指定數(shù)據(jù)庫名,后面的*號用來指定表名。
TO 表示將權(quán)限賦予某個用戶。
'test_user'@'%' 表示test_user用戶,@后面接限制的主機,可以是IP、IP段、域名以及%,%表示任何地方。

# 刷新權(quán)限
flush privileges;

# 查看某個用戶的權(quán)限
show grants for 'test_user'@'%';

# 回收權(quán)限
revoke delete on `testdb`.* from 'test_user'@'%';

權(quán)限管理是一件不容忽視的事,我們不能為了方便而給數(shù)據(jù)庫用戶很大的權(quán)限。特別是對于生產(chǎn)庫,更應(yīng)該進行權(quán)限管控,建議程序用戶只賦予增刪改查等基礎(chǔ)權(quán)限,個人用戶只賦予查詢權(quán)限。

出于安全考慮,建議遵循以下幾個經(jīng)驗原則:

  • 只授予能滿足需要的最小權(quán)限,防止用戶干壞事。比如用戶只是需要查詢,那就只給 select 權(quán)限就可以了。
  • 創(chuàng)建用戶的時候限制用戶的登錄主機,一般是限制成指定 IP 或者內(nèi)網(wǎng) IP 段。
  • 給各個服務(wù)單獨創(chuàng)建數(shù)據(jù)庫用戶,單個用戶最好只能操作單個庫。
  • 及時記錄各數(shù)據(jù)庫用戶權(quán)限等信息,以免忘記。
  • 若有外部系統(tǒng)調(diào)用,應(yīng)配置只讀用戶,并且權(quán)限要精確到表或視圖。
  • 定期清理不需要的用戶,回收權(quán)限或者刪除用戶。

以上就是詳解MySQL 用戶權(quán)限管理的詳細內(nèi)容,更多關(guān)于MySQL 用戶權(quán)限管理的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • mysql從5.7平滑升級到8.0.27的實現(xiàn)

    mysql從5.7平滑升級到8.0.27的實現(xiàn)

    mysql8.0已經(jīng)到了穩(wěn)定期,本文主要介紹了mysql從5.7平滑升級到8.0.27的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-06-06
  • Mysql分組排序取每組第一條的2種實現(xiàn)方式

    Mysql分組排序取每組第一條的2種實現(xiàn)方式

    開發(fā)中經(jīng)常會遇到,分組查詢最新數(shù)據(jù)的問題,下面這篇文章主要給大家介紹了關(guān)于Mysql分組排序取每組第一條的2種實現(xiàn)方式,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • MySQL表的碎片整理和空間回收的方法

    MySQL表的碎片整理和空間回收的方法

    本文主要介紹了MySQL表的碎片整理和空間回收的方法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • CentOS7.8安裝mysql 8.0.20的教程詳解

    CentOS7.8安裝mysql 8.0.20的教程詳解

    這篇文章主要介紹了CentOS7.8安裝mysql 8.0.20的方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • mysql觸發(fā)器一個表改變另一個表也改變問題

    mysql觸發(fā)器一個表改變另一個表也改變問題

    這篇文章主要介紹了mysql觸發(fā)器一個表改變另一個表也改變問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 最新評論