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 '[用户名]'@'[作用域]';