1. 创建用户
-- User: 用户名
-- Host: 允许登录IP(%为通配符, 表示所有IP)
-- Password: 密码
create user '[User]'@'[Host]' identified by '[Password]';
-- 例子
create user 'test'@'%' identified by '123456';
注意:MySQL5.7及以上版本会自动安装密码校验插件
,若用户密码设置过于简单会导致无法通过密码校验策略
,从而抛出如下异常:
1819 - Your password does not satisfy the current policy requirements
当抛出该异常时可采取如下方法进行处理:
- 增加密码复杂程度,如:增加长度,添加大小写字母以及特殊字符
- 修改密码校验策略规则
-- 设置(全局)密码校验策略
-- LOW: 只校验密码长度
-- MEDIUM: 需校验密码长度、密码中数字字符个数、密码中大小写字母字符个数、密码中特殊字符个数
-- STRONG: 需校验密码长度、密码中数字字符个数、密码中大小写字母字符个数、密码中特殊字符个数, 而且密码中任意连续4个及以上的字符不得是字典中的单词
set global validate_password_policy=LOW;
-- 设置(全局)密码最小长度限制
set global validate_password_length=6;
-- 设置(全局)密码数字字符最小个数限制
set global validate_password_number_count=1;
-- 设置(全局)密码大小写字母字符最小个数限制
set global validate_password_mixed_case_count=1;
-- 设置(全局)密码特殊字符最小个数限制
set global validate_password_special_char_count=1;
-- 设置(全局)密码字典
set global validate_password_dictionary_file=password;
-- 查询密码校验策略
show variables like 'validate_password%';
2. 删除用户
-- User: 用户名
-- Host: 允许登录IP(%为通配符, 表示所有IP)
drop user '[User]'@'[Host]';
-- 例子
drop user 'test'@'%';
3. 授予权限
-- Permission: 权限(all表示所有, 常见的权限如下表)
-- Database: 数据库(数据库层级权限,关于表层级和列层级这里不做说明)
-- User: 用户名
-- Host: 允许登录IP(%为通配符, 表示所有IP)
grant [Permission] on [Database].* to '[User]'@'[Host]';
-- 刷新
flush privileges;
-- 例子
grant all on test.* to 'test'@'%';
grant insert,delete,update,select on test.* to 'test'@'%';
flush privileges;
权限名称 | 权限层级 | 权限说明 |
---|---|---|
create | 数据库、表、索引 | 创建数据库、表、索引的权限 |
drop | 数据库、表、视图、索引 | 删除数据库、表、视图、索引的权限 |
alter | 表 | 修改表结构权限 |
index | 表 | 操作索引权限 |
insert | 表 | 插入数据权限 |
delete | 表 | 删除数据权限 |
update | 表 | 修改数据权限 |
select | 表 | 查询数据权限 |
create view | 视图 | 创建视图权限 |
show view | 视图 | 查看视图权限 |
create routine | 存储过程 | 创建存储过程权限 |
alter routine | 存储过程 | 修改存储过程权限 |
execute | 存储过程 | 执行存储过程权限 |
lock tables | 服务器管理 | 锁表权限 |
create user | 服务器管理 | 创建用户权限 |
grant option | - | 权限赋予权限 |
4. 回收权限
-- Permission: 权限(all表示所有, 常见的权限如上表)
-- Database: 数据库(数据库层级权限,关于表层级和列层级这里不做说明)
-- User: 用户名
-- Host: 允许登录IP(%为通配符, 表示所有IP)
revoke [Permission] on [Database].* from '[User]'@'[Host]';
-- 刷新
flush privileges;
-- 例子
revoke all on test.* from 'test'@'%';
revoke insert,delete,update,select on test.* from 'test'@'%';
flush privileges;
5. 查询权限
-- User: 用户名
-- Host: 允许登录IP(%为通配符, 表示所有IP)
show grants for '[User]'@'[Host]';
-- 例子
show grants for 'test'@'%';
6. 重置用户密码
-- User: 用户名
-- Host: 允许登录IP(%为通配符, 表示所有IP)
-- Password: 新密码
set password for '[User]'@'[Host]' = password('[Password]');
-- 例子
set password for 'test'@'%' = password('111111');