日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

前言

為了避免刪庫跑路的事情,權限管理和數據備份是必要。

機器環境

  • MySQL 8.0.21 x86_64 MySQL Community Serve

  • centos 7

Mysql 權限管理

Mysql 8.0 可以創建角色,然后將操作數據庫、表、索引等的權限賦予給角色,將將角色賦予給用戶,也是我們熟悉的 RBAC 模型。

當然也可以將權限直接授予用戶。

用戶

創建用戶

-- 用戶名稱是由 用戶名和登錄用戶的 ip 一同組成的,% 代表任意 ip 
CREATE USER 'db_dev'@'localhost' IDENTIFIED BY 'Mysql@12345678';

修改用戶密碼

-- 修改用戶密碼
ALTER USER 'test'@'localhost' IDENTIFIED BY 'password';

鎖定用戶

-- 鎖定用戶不能登錄
ALTER USER 'db_dev1'@'localhost' ACCOUNT LOCK;

-- 解鎖
ALTER USER 'db_dev1'@'localhost' ACCOUNT UNLOCK;

權限

用戶的權限信息保存在 information_schema.USER_PRIVILEGES 。也可以在 mysql.user 看到授權信息。

為了避免已經建立的鏈接的權限無法刷新,需要搭建數據庫的時候,權限就要設計好。

有部分權限是可以動態修改的,但是有的權限,在一個會話中是不能修改的。為了避免問題,需要數據庫使用之前就要做好權限規劃。

權限說明

grant 用法

權限 說明
ALL 所有的權限,除了 GRANT OPTION and PROXY.
ALTER 修改表結構,ALTER TABLE
CREATE 創建數據庫和表
DROP 刪除數據庫、表、視圖
GRANT OPTION GRANT權限允許你把你自己擁有的那些權限授給其他的用戶??梢杂糜跀祿?、表和保存的程序。
DELETE 刪除表數據
INDEX INDEX權限允許你創建或刪除索引。
INSERT 插入表數據
SELECT 查詢表數據
UPDATE 更新表數據
PROCESS show processlist 命令顯示在服務器內執行的線程的信息(即其它賬戶相關的客戶端執行的語句)。
SHOW VIEW 查看視圖
SHOW DATABASES 查看數據庫列表,沒有授予這個權限,只能查看到 information_schema
LOCK TABLES 鎖表
RELOAD FLUSH 相關的操作
CREATE TABLESPACE 允許使用操作表空間和日志的語句,比如創建,刪除,修改
CREATE TEMPORARY TABLES 創建臨時表

授權

-- 對從 localhost 登錄的用戶 db_dev 的數據庫:ceshi 中所有表(*) 授予 SHOW DATABASES,SELECT,RELOAD 權限
GRANT SHOW DATABASES,SELECT,RELOAD ON ceshi.* TO 'db_dev'@'localhost';

-- 也可以針對某個表授權,`` 是為了處理關鍵字,當沒有關鍵字可以 ceshi.test1 就可以
GRANT SELECT ON ceshi.`test1` TO 'db_dev'@'localhost';

-- 刷新權限信息,有的權限是可以動態加載的。為了避免權限出題,每次都執行這個語句
FLUSH PRIVILEGES;

回收權限

-- ON 指定數據庫.表 
-- FROM 指定用戶
REVOKE SHOW DATABASES,SELECT ON *.* FROM 'db_dev'@'localhost';
-- 刷新權限信息
FLUSH PRIVILEGES;

角色

使用數據庫的人員可能有,開發,DBA,運營相關(只會查詢數據),程序運行。

角色激活

給用戶賦予角色之后,角色默認不激活的。用戶可以在會話中激活用戶賦予的角色。

也可以設置參數,讓所有角色都激活,這樣用戶登錄成功,賦予的角色全選就可以使用了

-- 查看當前用戶下使用了哪些角色
SELECT CURRENT_ROLE();

-- 登錄之后激活定義的所有角色,給用戶賦予哪些角色,就可以使用這些角色的權限
SET global activate_all_roles_on_login=ON;

-- 在會話中修改激活哪些角色
SET ROLE ops;

創建及刪除角色

-- 開發(dev),db(db),運營(ops),程序運行(App_run)
CREATE ROLE 'app_run', 'db', 'ops', 'dev';

-- 刪除角色
DROP ROLE 'db', 'app_run';

給角色分配權限

  • 開發

開發一般會,創建數據庫和表,crud,操作索引,修改表結構

drop 權限我建議不要給

-- crud,創建
GRANT SELECT, INSERT, UPDATE, DELETE,CREATE,CREATE VIEW,ALTER,SHOW DATABASES,SHOW VIEW,ALTER,INDEX,PROCESS,RELOAD,LOCK TABLES ON *.* TO 'dev';
  • db

db 一般擁有所有權限

-- WITH GRANT OPTION 是擁有給用戶授權的權限
GRANT ALL PRIVILEGES ON *.* TO 'db' WITH GRANT OPTION;
  • 運營相關

基本都是查詢語句

-- 或者指定某個具體數據庫,或者表
GRANT SELECT,SHOW DATABASES,SHOW VIEW ON *.* TO 'ops';
  • 程序運行相關

為了使用 flyway 這種可以修改表結構和索引的組件。對權限賦予 CREATE,INDEX,ALTER.

DELETE 語句不要怕,現在 mybatis plus 類似的組件,都帶有安全刪除的校驗,全表刪除或者全表更新必須帶條件。在一定程度上避免刪除表中所有數據。

GRANT SELECT, INSERT, UPDATE, DELETE,CREATE,CREATE VIEW,SHOW DATABASES,SHOW VIEW,ALTER,INDEX,RELOAD,LOCK TABLES,CREATE TEMPORARY TABLES ON *.* TO 'app_run';

給用戶賦予角色

-- 給用戶賦予 ops 角色
GRANT 'ops' TO 'db_dev'@'localhost';

撤銷角色或者角色的權限

-- 從用戶撤銷某個角色
REVOKE ops FROM db_dev1@localhost;

-- 從角色中撤銷某個權限
REVOKE SHOW VIEW ON *.* FROM 'ops';

-- 刷新權限
FLUSH PRIVILEGES;

查詢用戶的權限

-- 顯示來自 localhost 登錄的 test 用戶
SHOW GRANTS FOR 'test'@'localhost';
SHOW GRANTS FOR 'root'@'%';

-- 來自某個角色 USEING 指定的角色的權限
SHOW GRANTS FOR 'read_user1'@'localhost' USING 'ops';

本文由 張攀欽的博客 http://www.mflyyou.cn/ 創作。 可自由轉載、引用,但需署名作者且注明文章出處。

分享到:
標簽:Mysql
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定