MySQL的權限體系
1.MySQL的權限資訊主要存儲在以下幾張表中,當使用者連接配接資料庫時,MySQL會根據這些表對使用者進行權限驗證。
表名 | 描述 |
user | 使用者權限表,記錄賬号、密碼及全局性權限資訊 |
db | 記錄資料庫相關權限 |
table_priv | 使用者對某個表擁有的權限 |
column_priv | 使用者對某表的某列所擁有的權限 |
procs_priv | 使用者對存儲過程及存儲函數的操作權限 |
2.使用grant和revoke進行授權、撤銷授權時,需要指定具體是哪些權限,這些權限大體可以分為3類,資料類、結構類和管理類。
資料 | 結構 | 管理 |
select | create | usage |
insert | alter | grant |
update | index | super |
delete | drop | process |
file | create temporary tables | reload |
show view | shutdown | |
create routine | show databases | |
alter routine | lock tables | |
execute | references | |
create view | repucation cuent | |
event | repucation slave | |
trigger | create user |
權限管理
1.建立使用者
create user'使用者名' [@'主機名'] [identified by '密碼'];
如下圖所示,建立一個使用者名為steven,主機名為localhost,密碼為admin123456的使用者。

2.删除使用者
drop user'使用者名' [@'主機名'];
如下圖所示,删除使用者名為steven,主機名為localhost的使用者。
3.修改密碼
alter user'使用者名'@'主機名' identified by '新密碼';
如下圖所示,将建立的使用者名為steven,主機名為localhost,密碼為admin123456的使用者密碼修改為admin123。
4.檢視權限
show grants for '使用者名' [@'主機名'];
如下圖所示,檢視使用者名為steven,主機名為localhost的使用者權限。
5.授權
grant all privileges on databaseName.tableName to '使用者名' [@'主機名'];
如下圖所示,将資料庫mydb的contacts表權限賦予使用者名為steven,主機名為localhost的使用者。
6.撤銷授權
revoke all privileges on databaseName.tableName from '使用者名' [@'主機名'] ;
如下圖所示,收回使用者名為steven,主機名為localhost的使用者所擁有的contacts表權限。
flush privileges;
update user set host = 'localhost' where user = 'username';