MySQL 常用用戶權限管理命令

一、用戶

1.1 創建用戶

-- 創建用戶,並允許其在任何IP登陸
create user 'username'@'%' identified by 'password';

-- 創建用戶,並允許其在任何主機登陸,不設置密碼
create user 'username'@'%';

-- 創建用戶,並僅允許使用jitwxs.cn域名的主機登陸
create user 'username'@'jitwxs.cn' identified by 'password';

-- 創建用戶,並僅允許使用192.168.1.1的主機登陸
create user 'username'@'192.168.1.1' identified by 'password';

-- 創建用戶,並僅允許使用192.168.1開頭的主機登陸
create user 'username'@'192.168.1.%' identified by 'password';

說明:

  • 密碼可以爲空,如爲空,則可以免密登陸

  • 如果主機位使用 %,表示允許任意地址的主機登陸

  • 主機位可以使用域名或者 IP 地址,但是不允許既有數字又有字母

  • 主機位中可以使用 % 進行通配,例如:%.jitwxs.cn192.168.1.%

1.2 修改用戶

一般在修改完密碼後,需要手動執行命令,將配置刷新到內存:flush privileges;

-- 重新設置用戶名和登陸IP
rename user 'old_username'@'old_ip_addr' to 'new_username'@'new_ip_addr';

-- 修改密碼
set password for 'username'@'ip_addr'=Password('new_password');

1.3 刪除用戶

drop user 'username'@'ip_addr';

二、權限

一般在調整完權限後,需要手動執行命令,將配置刷新到內存:flush privileges;

2.1 查看權限

-- 查看用戶所有權限
show grants for 'username'@'ip_addr';

2.2 權限授予

-- 授予用戶所有庫所有表的所有權限
grant all privileges on *.* to 'username'@'ip_addr';

-- 授予用戶database1庫所有表的所有權限
grant all privileges on `database1`.* to 'username'@'ip_addr';

-- 授予用戶database1庫table1表的所有權限
grant all privileges on `database1`.`table1` to 'username'@'ip_addr';

-- 授予用戶database1庫所有表的只讀權限
grant select on `database1`.* to 'username'@'ip_addr';

-- 授予用戶database1庫table1表的插入、更新權限
grant insert,update on `database1`.`table1` to 'username'@'ip_addr';

2.3 權限回收

-- 回收用戶所有權限
revoke all,grant option from 'username'@'ip_addr';

-- 回收用戶database1庫所有表的只讀權限
revoke select ON `database1`.* FROM 'xiangsheng.wu'@'%';

2.4 授予什麼就收回什麼

基於 2.1 節,我們授予權限是可以有不同粒度的,且這些權限保存的位置也是不一樣的,比如:

  • 授予全局權限: *.*, 保存在: mysql.user

  • 授予某個庫的權限: database1.*, 保存在: mysql.db

  • 授予某張表的權限: database1.tabl1, 保存在: mysql.tables_priv

因此,你要確保當初授予時是如何授予的,回收時候就要咋麼回收。

例如授予時採用 .* 的方式授予了所有表的權限,那麼回收的時候也必須使用 .* 的方式全部回收,而不能使用 .table_xx 的方式回收某一張表的權限,因爲它們壓根就不是一個粒度的配置。

2.5 附:常用權限列表

權 限 作用範圍 作 用
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 服務器 沒有權限

三、備份與恢復

3.1 備份

-- 備份database1庫所有表結構+數據
mysqdump -u username database1 > database1.sql -p

-- 備份database1庫所有表結構
mysqdump -u username -d database1 > database1.sql -p

3.2 恢復

-- 進入數據庫
use database1;
-- 將備份文件恢復到數據庫中
mysqdump -u username -d database1 < database1.sql -p
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章