MySQL權限整理及授權命令

MySQL是經常要使用的一種關係型數據庫,數據庫作爲存儲重要數據的地方,相應的,對數據庫的授權管理,也必須很小心,下面,我將MySQL的權限作了整理,方便需要的時候查看。

MySQL權限級別

服務器 》 數據庫 》 表 》 列

另外還有存儲過程、視圖和索引

MySQL權限列表:

權  限 作用範圍 作  用
all 服務器 所有權限
select 表、列 選擇行
insert 表、列 插入行
update 表、列 更新行
delete 刪除行
create 數據庫、表、索引 創建
drop 數據庫、表、視圖 刪除
reload 服務器 允許使用flush語句
shutdown 服務器 關閉服務
process 服務器 查看線程信息
file 服務器 文件操作
grant option 數據庫、表、存儲過程 授權
references 數據庫、表 外鍵約束的父表
index 創建/刪除索引
alter 修改表結構
show databases 服務器 查看數據庫名稱
super 服務器 超級權限
create temporary tables 創建臨時表
lock tables 數據庫 鎖表
execute 存儲過程 執行
replication client 服務器 允許查看主/從/二進制日誌狀態
replication slave 服務器 主從複製
create view 視圖 創建視圖
show view 視圖 查看視圖
create routine 存儲過程 創建存儲過程
alter routine 存儲過程 修改/刪除存儲過程
create user 服務器 創建用戶
event 數據庫 創建/更改/刪除/查看事件
trigger 觸發器
create tablespace 服務器 創建/更改/刪除表空間/日誌文件
proxy 服務器 代理成爲其它用戶
usage 服務器 沒有權限

MySQL授權命令

創建用戶

CREATE USER 'username'@'host' IDENTIFIED BY 'password';

CREATE USER 'user'@'192.168.1.10' IDENTIFIED BY 'password';

CREATE USER 'user'@'%';   #不設置密碼

說明:如果主機位使用%,那麼將允許從任意主機登錄;密碼可以爲空,若爲空,則用戶可以不需要密碼登錄服務器。

補充:主機名或者IP中可以使用%進行通配,如**%.baidu.com**;192.168.1.%

補充:如果即有字母,又有數字,則不進行匹配(防止惡意訪問)

補充:IPv4地址可以使用掩碼,如192.168.0.0/255.255.0.0  匹配整個B類地址

進行授權

GRANT privileges ON databasename.tablename TO 'username'@'host';

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON . TO 'user'@'%';

如果授予所有權限,則可以使用ALL,所有數據庫和所有表可以使用*

注意:ALL並不包括GRANT OPTION權限(也不包括proxy權限),如果需要使本用戶可以給其它用戶授權,則可以使用如下語句:

GRANT GRANT OPTION ON . TO 'user'@'%';  或者:

GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;

修改密碼

SET PASSWORD FOR 'user'@'%' = PASSWORD('pass');

mysqladmin -u用戶名 -p舊密碼 password 新密碼

取消授權

REVOKE privilege ON databasename.tablename FROM 'username'@'host';

REVOKE SELECT ON . FROM 'user'@'%';

刪除用戶

DROP USER 'username'@'host';

查看用戶權限

查看當前用戶權限:

show grants;

查看其它用戶權限:

show grants for 'user'@'%';

用戶重命名

RENAME USER 'user'@'%' TO 'dong'@'%';

刷新權限

flush privileges;

MySQL權限說明

all,服務器

授予所有權限

alter,表

可以使用alter table來改變表的結構。alter table同時需要create和insert權限;重命名錶需要舊錶的alter和drop權限,新表的create和insert權限

alter routine,存儲過程

更改和刪除存儲過程(過程和函數)

create,數據庫/表/索引

允許創建新的數據庫和表以及索引

create routine,存儲過程

允許創建存儲過程(過程和函數)

create tablespace,服務器

創建、更改或刪除表空間和日誌文件組

create temporary tables,表

使用create temporary table創建臨時表。會話創建臨時表後,不再對該表進行權限檢查,創建會話可以對該表執行任何操作

create user,服務器

創建用戶,允許使用alter user/create user/drop user/rename user/revoke all privileges語句對用戶權限進行操作

create view,視圖

創建視圖,允許使用create view語句

delete,表

允許刪除行

drop,數據庫/表/視圖

刪除現有數據庫、表和視圖。在分區表使用alter table … drop partition語句,truncate table也需要drop權限。若將mysql庫的drop權限授予用戶,則該用戶可以刪除權限數據庫

event,數據庫

創建、更改、刪除或查看事件調度程序的事件

execute,存儲過程

執行存儲過程(過程和函數)

file,服務器

允許使用load data infile和select … into outfile語句以及load_file()函數。從5.7.17開始,create table語句中的data directory或者index directory選項也需要該權限

grant option,數據庫/表/存儲過程

授予其它用戶或者從其它用戶刪除你所擁有的權限。 grant option權限使用戶可以將其權限授予其他用戶。具有不同特權和grant option權限的兩個用戶可以組合特權。

index,表

創建或刪除索引。適用於現有表,如果你具有create權限,則可以在創建表語句中包含索引定義

insert,表/列

插入行。analyze table/optimize table/repair table表維護語句也需要該權限

lock tables,數據庫

鎖表。使用lock tables語句顯示的鎖定你擁有select權限的表,包括寫入鎖,可以防止其它他話讀取鎖定的表

process,服務器

顯示線程信息。使用show processlist/mysqladmin processlist查看其它用戶的線程,還可以使用show engine語句

proxy,服務器

代理權限。可以代理成爲另一個用戶

references,數據庫/表

創建外鍵約束的父表需要該權限

reload,服務器

允許使用flush語句。同進還啓用等效的mysqladmin命令:flush-hosts,flush-logs,flush-privileges,flush-status,flush-tables,flush-threads,refresh和reload

replication client,服務器

允許使用show master status/show slave status/show binary logs語句

replication slave,服務器

允許從服務器請求當前主服務器上的更新

select,表/列

選擇行。其他讀取列的語句也需要該權限,如delete或update語句中where子句指定的列

show databases,服務器

通過show databases語句查看數據庫名稱

show view,視圖

通過show create view語句查看視圖,與explain一起使用的視圖也需要此權限

shutdown,服務器

使用shutdown語句,mysqladmin關閉以及mysql_shutdown()函數

super,服務器

通過修改全局系統變量來啓用配置更改。對某些系統變量,設置會話值也需要該權限。binlog_format,sql_log_bin,sql_log_off
全局事務特性更改
啓動和停止複製,包括組複製
允許使用change master to和change replication filter語句
二進制日誌控制,purge binary logs和binlog語句
執行視圖或存儲程序時啓用授權ID
允許使用create server,alter server和drop server語句
允許使用mysqladmin debug命令
啓用innodb密鑰輪換
使用des_encrypt()函數讀取DES密鑰文件
使用版本令牌用戶定義函數
對非super帳戶客戶端連接的控制

使用kill語句或者mysqladmin kill命令終止屬於其他用戶的線程
即使達到max_connections控制的連接限制,服務器也會授受來自super客戶端的連接
即使使用了read_only系統變量,也可以執行更新
super客戶端連接時,服務器不執行init_connect系統變量內容
處於脫機模式offline_mode的服務器不會終止super客戶端的連接,並接受來自super客戶端的新連接
如果啓用二進制日誌記錄,可能還需要super權限創建或更改存儲過程

trigger,服務器

觸發器。創建、刪除、執行、顯示該表的觸發器

update,表/列

更新行

usage,服務器

沒有任何權限

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