MySQL用戶及權限管理
- 查看用戶及權限
- 查看用戶及作用域(使用范圍)
- 查看用戶權限
- 創建用戶及授權
- 字段參數
- 用戶管理
使用命令提示符登錄MySQL
mysql -h localhost -u root -p
查看用戶及權限
mysql中的用戶信息和權限等都存儲在一個名為mysql的數據庫中。其中主要用到的是user、db、tables_priv、columns_priv、procs_priv這五張表,最重要的是user表。
表名 | 說明 |
---|---|
user | 表存儲全局權限,適用于一個給定服務器中的所有數據庫,在命令中展現形式為*.*; |
db | 表存儲數據庫權限,適用于一個給定數據庫中的所有表,在命令中展現形式為[數據庫名].*; |
tables_priv | 表存儲表權限,適用于一個給定表中的所有列,在命令中展現形式為[數據庫名].[表名]; |
columns_priv | 表存儲列權限,適用于一個給定表中的單一列,在命令中展現形式為; |
查看用戶及作用域(使用范圍)
select user,host from mysql.user;
user表中user+host是復合主鍵,user表示用戶名,host表示作用域(即可以登陸的IP)
查看用戶權限
命令格式show grants for '[用戶名]'@'[使用范圍]'
show grants for 'root'@'localhost';
會顯示可以使用的表名及權限,其中USAGE表示無權限,建議最大化窗口查看,表格會比較清晰
創建用戶及授權
可以單獨使用create user '[新用戶名]'@'[作用域]' identified by '[密碼]';
來創建用戶然后再授權,
也可以直接使用grant [權限] on [數據庫名].[表名] to '[用戶名]'@'[作用域]' identified by '[密碼]';
創建并授權,
最后需要使用命令flush privileges
刷新權限變更。
字段參數
[權限]
- all privileges:所有權限。
- select:讀取權限。
- delete:刪除權限。
- update:更新權限。
- create:創建權限。
- drop:刪除數據庫、數據表權限。
[數據庫名].[表名]
- *.*:授予該數據庫服務器所有數據庫的權限。
- dbName.*:授予dbName數據庫所有表的權限。
- dbName.dbTable:授予數據庫dbName中dbTable表的權限。
[作用域]
- localhost:只允許該用戶在本地登錄,不能遠程登錄。
- %:允許在除本機之外的任何一臺機器遠程登錄。
- 192.168.0.100:具體的IP表示只允許該用戶從特定IP登錄。
用戶管理
創建用戶
create user '[新用戶名]'@'[作用域]' identified by '[密碼]';
為現有用戶授權
grant [權限] on [數據庫名].[表名] to '[用戶名]'@'[作用域]';
創建用戶并授權 or 修改已有用戶密碼并授權
grant [權限] on [數據庫名].[表名] to '[用戶名]'@'[作用域]' identified by '[密碼]';
修改用戶名
rename user'[舊用戶名]'@'[作用域]' to '[新用戶名]'@'[作用域]'
修改密碼
alter user '[用戶名]'@'[作用域]' identified by '[新密碼]';
set password for [用戶名]@[作用域]=password('[新密碼]');
刪除授權
revoke [權限] on [數據庫名].[表名] from '[用戶名]'@'[作用域]';
刪除用戶
drop user '[用戶名]'@'[作用域]';