久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MYSQL數據庫管理之權限管理怎么配置

141次閱讀
沒有評論

共計 3620 個字符,預計需要花費 10 分鐘才能閱讀完成。

這篇“MYSQL 數據庫管理之權限管理怎么配置”文章的知識點大部分人都不太理解,所以丸趣 TV 小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“MYSQL 數據庫管理之權限管理怎么配置”文章吧。

一、MYSQL 權限簡介

關于 mysql 的權限簡單的理解就是 mysql 允許你做你權利以內的事情, 不可以越界。比如只允許你執行 select 操作,那么你就不能執行 update 操作。

只允許你從某臺機器上連接 mysql,那么你就不能從除那臺機器以外的其他機器連接 mysql。

那么 MYSQL 的權限是如何實現的呢?這就要說到 mysql 的兩階段的驗證,下面詳細來介紹:

第一階段:服務器首先會檢查你是否允許連接。因為創建用戶的時候會加上主機限制,可以限制成本地、某個 IP、某個 IP 段、以及任何地方等,只允許你從配置的指定地方登錄。后面在實戰的時候會詳細說關于主機的限制。

第二階段:如果你能連接,MYSQL 會檢查你發出的每個請求,看你是否有足夠的權限實施它。比如你要更新某個表、或者查詢某個表,MYSQL 會檢查你對哪個表或者某個列是否有權限。再比如,你要運行某個存儲過程,MYSQL 會檢查你對存儲過程是否有執行權限等。

1.MYSQL 到底都有哪些權限呢?

從官網復制一個表來看看:

權限

權限級別

權限說明

CREATE

數據庫、表或索引

創建數據庫、表或索引權限

DROP

數據庫或表

刪除數據庫或表權限

GRANT OPTION

數據庫、表或保存的程序

賦予權限選項

REFERENCES

數據庫或表

ALTER

更改表,比如添加字段、索引等

DELETE

刪除數據權限

INDEX

索引權限

INSERT

插入權限

SELECT

查詢權限

UPDATE

更新權限

CREATE VIEW

視圖

創建視圖權限

SHOW VIEW

視圖

查看視圖權限

ALTER ROUTINE

存儲過程

更改存儲過程權限

CREATE ROUTINE

存儲過程

創建存儲過程權限

EXECUTE

存儲過程

執行存儲過程權限

FILE

服務器主機上的文件訪問

文件訪問權限

CREATE TEMPORARY TABLES

服務器管理

創建臨時表權限

LOCK TABLES

服務器管理

鎖表權限

CREATE USER

服務器管理

創建用戶權限

PROCESS

服務器管理

查看進程權限

RELOAD

服務器管理

執行 flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, reload 等命令的權限

REPLICATION CLIENT

服務器管理

復制權限

REPLICATION SLAVE

服務器管理

復制權限

SHOW DATABASES

服務器管理

查看數據庫權限

SHUTDOWN

服務器管理

關閉數據庫權限

SUPER

服務器管理

執行 kill 線程權限

2.MYSQL 的權限如何分布

就是針對表可以設置什么權限,針對列可以設置什么權限等等,這個可以從官方文檔中的一個表來說明:

權限分布

可能的設置的權限

表權限

Select , Insert , Update , Delete , Create , Drop , Grant , References , Index , Alter

列權限

Select , Insert , Update , References

過程權限

Execute , Alter Routine , Grant

針對權限這部分,最主要的是要知道 MYSQL 是如何驗證的(兩階段驗證),以及 mysql 各個權限是做什么用的,以及那些權限用在什么地方 (表 or 列?)。

如果這些把握了那么 MYSQL 權限對你來說就是小菜一碟了,只要看一下后面的權限管理就可以融會貫通了。 

二、MYSQL 權限經驗原則

權限控制主要是出于安全因素,因此需要遵循一下幾個經驗原則:

1.  只授予能滿足需要的最小權限,防止用戶干壞事。哈哈。比如用戶只是需要查詢,那就只給 select 權限就可以了,不要給用戶賦予 update、insert 或者 delete 權限。

2.  創建用戶的時候限制用戶的登錄主機,一般是限制成指定 IP 或者內網 IP 段。

3.  初始化數據庫的時候刪除沒有密碼的用戶。安裝完數據庫的時候會自動創建一些用戶,這些用戶默認沒有密碼。

4.  為每個用戶設置滿足密碼復雜度的密碼。

5.  定期清理不需要的用戶。回收權限或者刪除用戶。

三、MYSQL 權限實戰 1.GRANT 命令使用說明

先來看一個例子,創建一個只允許從本地登錄的超級用戶 feihong,并允許將權限賦予別的用戶,密碼為 test@feihong.111

GRANT ALL PRIVILEGES ON *.* TO feihong@ localhost  IDENTIFIED BY  test@feihong.111  WITH GRANT OPTION;

GRANT 命令說明:

ALL PRIVILEGES  是表示所有權限,你也可以使用 select、update 等權限提到的權限。

ON  用來指定權限針對哪些庫和表。

*.*  中前面的 * 號用來指定數據庫名,后面的 * 號用來指定表名。

TO  表示將權限賦予某個用戶。

feihong@ localhost   表示 feihong 用戶,@后面接限制的主機,可以是 IP、IP 段、域名以及 %,% 表示任何地方。注意:這里 % 有的版本不包括本地,以前碰到過給某個用戶設置了 % 允許任何地方登錄,但是在本地登錄不了,這個和版本有關系,遇到這個問題再加一個 localhost 的用戶就可以了。

IDENTIFIED BY  指定用戶的登錄密碼。

WITH GRANT OPTION  這個選項表示該用戶可以將自己擁有的權限授權給別人。注意:經常有人在創建操作用戶的時候不指定 WITH GRANT OPTION 選項導致后來該用戶不能使用 GRANT 命令創建用戶或者給其他用戶授權。

備注:可以使用 GRANT 重復給用戶添加權限,權限疊加,比如你先給用戶添加了一個 select 權限,然后又給用戶添加了一個 insert 權限,那么該用戶就同時擁有了 select 和 insert 權限。

2. 創建一個超級用戶

創建一個只允許從本地登錄的超級用戶 feihong,并允許將權限賦予別的用戶,密碼為 test@feihong.111

GRANT ALL PRIVILEGES ON *.* TO feihong@ localhost  IDENTIFIED BY  test@feihong.111  WITH GRANT OPTION;

3. 創建一個網站用戶 (程序用戶)

創建一個一般的程序用戶,這個用戶可能只需要 SELECT, INSERT, UPDATE, DELETE, CREATE TEMPORARY TABLES 等權限如果有存儲過程還需要加上 EXECUTE 權限,一般是指定內網網段 192.168.100 網段。

GRANT USAGE,SELECT, INSERT, UPDATE, DELETE, SHOW VIEW ,CREATE TEMPORARY TABLES,EXECUTE ON `test`.* TO webuser@ 192.168.100.%  IDENTIFIED BY  test@feihong.111

4. 創建一個普通用戶 (僅有查詢權限)

GRANT USAGE,SELECT ON `test`.* TO public@ 192.168.100.%  IDENTIFIED BY  public@feihong.111

5. 刷新權限

使用這個命令使權限生效,尤其是你對那些權限表 user、db、host 等做了 update 或者 delete 更新的時候。

以前遇到過使用 grant 后權限沒有更新的情況,大家可以養成習慣,只要對權限做了更改就使用 FLUSH PRIVILEGES 命令來刷新權限。

FLUSH PRIVILEGES;

6. 查看權限

使用如下命令可以方便的查看到某個用戶的權限:

SHOW GRANTS FOR  webuser @ 192.168.100.%

7. 回收權限

將前面創建的 webuser 用戶的 DELETE 權限回收,使用如下命令

REVOKE DELETE ON test.* FROM  webuser @ 192.168.100.%

8. 刪除用戶

注意刪除用戶不要使用 DELETE 直接刪除,因為使用 DELETE 刪除后用戶的權限并未刪除,新建同名用戶后又會繼承以前的權限。

正確的做法是使用 DROP USER 命令刪除用戶,比如要刪除 webuser @ 192.168.100.% 用戶采用如下命令:

DROP USER  webuser @ 192.168.100.%

大家可以采用 percona-toolkit 工具中的 pt-show-grants 工具來輔助管理 mysql 權限

以上就是關于“MYSQL 數據庫管理之權限管理怎么配置”這篇文章的內容,相信大家都有了一定的了解,希望丸趣 TV 小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注丸趣 TV 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-13發表,共計3620字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 玉林市| 晴隆县| 阿坝县| 罗城| 新丰县| 乐都县| 且末县| 军事| 安塞县| 永胜县| 海盐县| 城市| 佛冈县| 双鸭山市| 博客| 霞浦县| 英吉沙县| 章丘市| 阿克苏市| 濮阳市| 麟游县| 丹东市| 东源县| 金秀| 厦门市| 平利县| 河东区| 望奎县| 莱芜市| 鹰潭市| 炎陵县| 南澳县| 广德县| 磐石市| 临安市| 侯马市| 兴海县| 利辛县| 屏东市| 南充市| 南安市|