數據庫-mysql用戶權限和管理

一、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;   #(格式化顯示)

image.png

2)查看當前mysql用戶權限:

show grants;

image.png

3)查看某個用戶的權限:

show grants for username@host; #用戶名@主機

示例:

show grants for test@localhost;

image.png

(4)查看所有用戶

 select host,user from mysql.user;

image.png

2. Mysql用戶創建:

使用create user命令創建。

create user '用戶名'@'主機' identified by '密碼';

示例:

create user 'yangchao'@'localhost' identified by 'yangchao';
flush privilege;        #創建完用戶及權限後,需要使用該命令刷新權限

image.png


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;

image.png

可使用“*”表示所有數據庫或所有數據表,“%”表示任何主機地址。

如:

grant all privileges on *.* to ‘yangchao1’@'%' identified by 'yangchao1';

image.png

可以使用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;


image.png


方法二:使用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 新密碼;

image.png

(回車後會提示輸入舊密碼,輸入之後即可修改成功。)

注意:

  更改密碼時候一定要使用PASSWORD函數(mysqladmin GRANT 兩種方式不用寫,會自動加上)。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章