@ "TOC" 什麼是許可權 限制一個用戶能夠做什麼事情,在MySQL中,可以設置全局許可權,指定資料庫許可權,指定表許可權,指定欄位許可權 有哪些許可權 1. create:創建資料庫、表或索引許可權 2. DROP:除資料庫或表許可權 3. ALTER:ALTER更改表,比如添加欄位、索引等 4. DELETE ...
@目錄
什麼是許可權
限制一個用戶能夠做什麼事情,在MySQL中,可以設置全局許可權,指定資料庫許可權,指定表許可權,指定欄位許可權
有哪些許可權
- create:創建資料庫、表或索引許可權
- DROP:除資料庫或表許可權
- ALTER:ALTER更改表,比如添加欄位、索引等
- DELETE:刪除數據許可權
- INDEX:索引許可權
- INSERT:插入許可權
- SELECT:查詢許可權
- UPDATE:更新許可權
- CREATE VIEW:創建視圖許可權
- EXECUTE:執行存儲過程許可權
Mysql8之前
創建用戶:
create user '用戶名'@'localhost' identified by '密碼';
刪除用戶:
DROP USER 用戶名稱
分配許可權:
GRANT 許可權 (columns) ON 資料庫對象 TO 用戶 IDENTIFIED BY "密碼" WITH GRANT OPTION
Mysql8
MySQL8新增了角色(role)的概念,使賬號許可權的管理,更加靈活方便。 角色,就是一些許可權的集合。然後再把角色授權給某個賬戶
創建角色
create role 'app_dev','app_read','app_write';
查詢授權情況
show grants for 'app_dev';
USAGE “無許可權”
就是讓你這個用戶可以像個用戶似的登錄,但是除了能看到有哪些資料庫外,什麼許可權也沒有
創建的角色也和賬號一樣保存在mysql.user表中
select * from mysql.user;
給角色授權
給指定角色許可權
grant select,insert,update,delete on *.* to app_dev;
grant select on mydb.* to app_read;
grant insert,update,delete on mydb.* to app_write;
創建用戶, 將許可權 授予用戶
- 創建用戶
create user myuser2 identified with mysql_native_password by 'myuser2';
- 分配角色
grant app_write to myuser2;
- 查詢用戶對應的角色
show grants for myuser1;
看到的是角色,並不是具體的許可權
如果要查看具體的許可權則需要這樣執行show grants
show grants for myuser2 using app_dev
通過使用using app_dev,會將賬號和角色的許可權一併顯示
4. 可以繼續給角色添加許可權
grant create on mydb.* to app_dev;
激活角色
查看當前角色
select current_role()
激活指定用戶授權的所有角色
set default role all to myuser1
刪除 指定許可權
revoke create on sys.* from '角色名稱'@'127.0.0.1';
revoke all on sys.* from 'app_dev'@'127.0.0.1';
刪除用戶
drop user '用戶名'@'127.0.0.1';