一、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 | 服務器管理 | 創建用戶權限 |
proccess | 服務器管理 | 查看進程權限 |
reload | 服務器管理 | 執行flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, reload等命令的權限 |
replication client | 服務器管理 | 複製權限 |
replication slave | 服務器管理 | 複製權限 |
show databases | 服務器管理 | 查看數據庫權限 |
shutdown | 服務器管理 | 關閉數據庫權限 |
super | 服務器管理 | 執行kill線程權限 |
二、Mysql用戶權限管理操作
1. 權限查詢:
(1)查看mysql的所有用戶及其權限:
select * from mysql.user\G; #(格式化顯示)
(2)查看當前mysql用戶權限:
show grants;
(3)查看某個用戶的權限:
show grants for username@host; #用戶名@主機
示例:
show grants for test@localhost;
(4)查看所有用戶
select host,user from mysql.user;
2. Mysql用戶創建:
使用create user命令創建。
create user '用戶名'@'主機' identified by '密碼';
示例:
create user 'yangchao'@'localhost' identified by 'yangchao'; flush privilege; #創建完用戶及權限後,需要使用該命令刷新權限
3. Mysql用戶刪除:
drop user '用戶名'@'主機';
4. Mysql用戶權限授予:
剛創建的用戶默認是沒有權限的,需要使用grant指令進行權限的授予。
grant指令完整格式:
grant 權限列表 on 數據庫名.數據表名 to ‘用戶名’@’主機’ identified by ‘密碼’ with grant option; #數據庫名.*代表庫下所有的表
示例:
grant all privileges on *.* to ‘yangchao1’@'localhost' identified by 'yangchao1' with grant option;
可使用“*”表示所有數據庫或所有數據表,“%”表示任何主機地址。
如:
grant all privileges on *.* to ‘yangchao1’@'%' identified by 'yangchao1';
可以使用grant重複給用戶添加權限,進行權限疊加。
with grant option:這個選項表示該用戶可以將自己擁有的權限授權給別人,可以不添加
記得授權後一定要刷新權限:
flush privileges;
5. Mysql用戶權限回收:
revoke指令格式:
revoke 權限列表 on 數據庫名.數據表名 from 用戶名@主機;
示例:
revoke drop on *.* from test@localhost;#回收drop權限
注意:
其實GRANT語句在執行的時候,如果權限表中不存在目標賬號,則創建賬號;如果已經存在,則執行權限的新增。
usage權限不能被回收,也就是說,REVOKE用戶權限並不能刪除用戶。
6. 對賬戶重命名:
rename user '舊用戶名'@'舊主機' to '新用戶名'@'新主機';
示例:
rename user 'test'@'localhost' to 'test1'@'localhost';
7. Mysql用戶密碼修改:
方法一:使用set password命令。
set password for '用戶名'@'主機' = password('新密碼'); #需要執行刷新權限 flush privileges;
示例:
set password for 'yangchao'@'localhost' = password('123456');
flush privileges;
方法二:使用grant指令在授權時修改密碼:
grant select on 數據庫名.數據表名 to 用戶名@主機 identified by '新密碼' with grant option;
示例:
grant select on test.user to test@localhost identified by '111111' with grant option;
方法三:運行mysqladmin腳本文件。
該文件一般在mysql安裝目錄下的bin目錄中。進入該目錄,根據一下兩種具體情況輸入命令(只有root用戶有這個權限)。
(1)用戶尚無密碼:
mysqladmin -u 用戶名 password 新密碼;
(2)用戶已有密碼:
mysqladmin -u 用戶名 -p password 新密碼;
(回車後會提示輸入舊密碼,輸入之後即可修改成功。)
注意:
更改密碼時候一定要使用PASSWORD函數(mysqladmin 和GRANT 兩種方式不用寫,會自動加上)。