创建用户、删除用户、管理密码、权限管理
1、创建新用户
创建用户的过程,mysql会在user表中新增一条记录,新创建的用户没有任何权限,只能链接mysql服务器
CREATE USER创建用户语法:
CREATE USER [IF NOT EXISTS]
用户名1 [密码策略][, 用户名2 [密码策略]]...
[DEFAULT ROLE 角色1 [,角色2] ...]
[REQUIRE {NONE | 安全标识1 [[AND] 安全标识2]...}]
[WITH 资源限制参数列表]
[PASSWORD 密码失效参数]
[ACCOUNT LOCK|UNLOCK]
[COMMENT '注释信息' | ATTRIBUTE 'JSON对象'];
提示:
用户名, ('用户名'@'主机名') 形式
密码值, 密码值通过 (IDENTIFIED [WITH插件] BY密码值)子句指定
DEFAULT ROLE, 指定用户角色 MySQL8开始支持角色指定
REQUIRE,指定安全标识 如SSL、X509等
WITH,限制用户使用资源
PASSWORD,设置用户密码到期更换策略或密码重用策略
ACCOUNT,账号状态UNLOCK
COMMENT,创建用户语句添加注释信息
ATTRIBUTE,创建用户添加额外的属性信息,额外的属性信息需要通过JSON对象格式指定
实例1:创建用户名 xiaohong 主机名 localhost
CREATE USER IF NOT EXISTS 'xiaohong'@'localhost';
2、创建只能在特定主机登录的用户
CREATE USER IF NOT EXISTS 'xiaoming'@'192.168.2.130';
创建的用户只能在指定的主机上登录
查看mysql系统库的user表 xiaoming 的用户记录:
SELECT 'host','user','authentication_string' FROM mysql.user WHERE 'user'='xiaoming'\G
3、创建可以在某个ip段内链接MYSQL服务的用户
CREATE USER IF NOT EXISTS 'xiaozhang'@'192.168.2.%';
在某个ip段,mysql登录也需要使用 -h192.168.2.99 ip才能登录,不能使用-hlocalhost -h127.0.0.1 或不写该参数的方式
4、创建可以通过任意主机链接mysql的服务的用户
CREATE USER IF NOT EXISTS 'xiaoli'@'%';
没指定主机名 默认就是 % 表示任意主机
mysql -uxiaoli
mysql -h192.168.41.90 -P3306 -uxiaoli
mysql -hlocalhost -P3306 -uxiaoli
mysql -h127.0.0.1 -P3306 -uxiaoli
5、创建MySQL用户时,可以指定用户的连接密码
实例:创建用户xiaohua 主机名% 密码12345678
CREATE USER IF NOT EXISTS 'xiaohua'@'%' IDENTIFIED BY '12345678';
6、创建用户时为用户设置插件认证方式
使用IDENTIFIED WITH语句
实例: 创建用户 xiaowang 主机名% 密码12345678
CREATE USER IF NOT EXISTS 'xiaowang'@'%' IDENTIFIED WITH mysql_native_password BY '12345678';
1、ALTER语句修改用户
ALTER USER [IF NOT EXISTS]
用户名1 [密码策略][, 用户名2 [密码策略]]...
[DEFAULT ROLE 角色1 [,角色2] ...]
[REQUIRE {NONE | 安全标识1 [[AND] 安全标识2]...}]
[WITH 资源限制参数列表]
[PASSWORD 密码失效参数]
[ACCOUNT LOCK|UNLOCK]
[COMMENT '注释信息' | ATTRIBUTE 'JSON对象'];
注意:
用户名不能使用alter语句修改,其他信息都可以修改
用户名修改需要使用 RENAME USER 旧用户名 To 新用户名; 修改
案例:修改用户 'xiaohong'@'%' 密码为 123456
ALTER USER 'xiaohong'@'%' IDENTIFIED BY '123456';
2、用户账户锁定和解锁
使用CREATE USER 和ALTER USER语句时,可以通过 ACCOUNT字句 设置账户锁定或解锁
案例:创建用户 'xiaohong'@'%' 并设置账户锁定
CREATE USER 'xiaohong'@'%'
IDENTIFIED BY '123456'
ACCOUNT LOCK;
此时,xiaohong被锁定,无法登录
3、解锁'xiaohong'@'%'用户
ALTER USER 'xiaohong'@'%' ACCOUNT UNLOCK;
此时,xiaohong即可重新登录
删除用户:
使用DROP 和 DELETE语句删除
1、使用DROP 语句删除 'xiaohong'@'192.168.4.10' 用户
DROP USER 'xiaohong'@'192.168.4.10';
2、使用DELETE语句删除
DELETE FROM mysql.user WHERE USER ='xiaohong' AND HOST ='192.168.4.10.%';
用户被删除后,权限表中的该用户权限记录都会被删除