一、用戶
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.cn
或192.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