MySQL用户管理

这篇博客详细介绍了MySQL中创建、设置密码、修改和删除用户的方法。包括CREATE USER语句的多种用法,如创建简单用户、设置密码、创建多个用户及资源控制。还提到了ALTER USER用于修改用户属性,如密码、验证插件、资源限制和账户锁定状态。最后讨论了DROP USER语句用于删除用户。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.创建用户
由于 MySQL中所有用户的信息都保存在 mysql.user表中.
创建用户可以直接利用root用户登录 MySQL服务器后,向 mysql.user表中插入记录,但是在开发中为保证数据的安全,并不推荐使用此方式创建用户
采用 MySQL提供的 CREATE USER语句创建用户.
采用 MySQL提供的 GRANT语句创建用户,在讲解权限时讲解
使用 CREATE USER语句每创建一个新用户,都会在 mysql. user表中添加一条记录,同时服务器会自动修改相应的授权表.
该语句创建的新用户默认情况下没有任何权限,需要使用 GRANT进行授权
CREATE USER [IF NOT EXISTS] 账户名 [用户身份验证选项][,账户名[用户身份验证选项]]…
[WITH 资源控制选项]密码管理选项丨账户锁定选项]

CREATE USER 语句选项的默认值
在这里插入图片描述
用户身份验证选项的设置仅适用于其前面的用户名,可将其理解为某个用户的私有属性.
其余的选项对声明中的所有用户都有效,可以将其理解为全局属性.

常见的6种创建用户方式:

  • 创建简单的用户
Create User 'test1';
#查看用户是否已创建
Select host,user From mysql.user;

在这里插入图片描述
host的值为"%"表示任何主机,其值为 localhost时,表本地主机,其值为空字符串(’ ')时,表示所有客户端。

  • 创建含有密码的用户
Create user 'test2'@'localhost' Identified By '123456';
#查看用户的密码
Select plugin,authentication_String
 From mysql.user Where user='test2';

在这里插入图片描述
在设置用户密码时还可以指定对密码加密的插件,只需将" IDENTIFIED BY·明文密码"修改为指定的选项即可。

  • 在这里插入图片描述
    IDENTIFIED WITH验证插件名BY明文密码:
Create user 'test2'@'localhost' 
Identified With 'mysql_native_password' By '123456';

IDENTIFIED WITH关键字指明验证密码的插件名.
关键字BY后跟明文的密码.

  • 同时创建多个用户:
Create User 'test3'@'localhost'
Identified By '333333',
'test4'@'localhost'Identified By '444444';

多个用户之间使用逗号分隔
在创建每个用户时可以单独为其设置密码,省略用户身份验证选项时,表明此用户在登录服务器时可以免密登录,但为了保证数据安全,不推荐用户这样做.

  • 在创建用户时,可以添加WITH直接为用户指定可操作的资源范围,如登录的用户在一小时内可以查询数据的次数等.
    在这里插入图片描述
    MAX_USER_CONNECTIONS选项的值为0时,服务器将根据max_user_connections系统变量的值确定用户的同时连接数,若此变量值也为0,表示对该用户没有限制,与表中前三个选项的默认值含义相同.
    MAX_QUERIES_PER_HOUR选项不会计算从缓存中查询数据的次数

限制其每小时最多可以更新10次:

Create user 'test5'@'localhost'
Identified By '555555' 
With Max_updates_per_hour 10;
#查看user表中max_updates字段
Select max_updates From user Where user='test5';

在这里插入图片描述

  • 在创建用户时,不仅可以为用户设置密码,还可以为密码设置有效时间.
    在这里插入图片描述
    在重置用户密码时,操作的用户必须要有全局的 CREATE USER权限或mysql数据库的 UPDATE特权.

设置用户密码每180天更改一次:

Create user 'test6'@'localhost'
Identified By '666666' Password Expire 
Interval 180 Day;
  • 利用 ACCOUNT关键字可以为创建的用户设置是否被锁定.
    它有两个可选值,分别为LOCK(锁定)和UNLOCK(解锁).

创建一个锁定状态的用户:

Create user 'test7'@'localhost'
Identified By '777777' Password Expire Account Lock;
#查看user表的account locked 字段
Select account_locked From mysql.user
 Where user='test7';

在这里插入图片描述
2.设置密码
除了创建用户的同时设置密码外,还可为没有密码的用户、密码过期的用户或为指定用户修改密码。

  • ALTER USER账户名 IDENTIFIED BY ‘明文密码’;
  • SET PASSWORD[FOR账户名]=‘明文密码’;
  • SET PASSWORD[FOR账户名]= PASSWORD(‘明文密码’);

为指定用户设置密码:

Alter User 'test1'@'%' Identified By '123456';

为登录用户设置密码:

Alter User User()Identified By '000000';
Select Current_user();

在这里插入图片描述
3.修改用户
用户创建完成后,管理员可以通过 MySQL提供的专门SQL语句修改用户的密码丶身份验证的方式、资源限制丶密码的属性、以及账户的锁定和解锁的状态.
ALTER USER [IF EXISTS] 账户名[用户身份验证选项][,账户名[用户身份验证选项]][WITH 资源限制选项][密码管理选项|账户锁定选项]
ALTER USER可同时修改一个或多个用户,多个用户之间使用逗号(,)分隔。
语法中选项的可选值与创建用户时的选项完全相同.
每个修改的用户,都会更新其在 mysql.user表中对应的字段值,而未修改的字段仍然保留它原来的值.

修改用户验证插件丶密码以及密码过期时间:

Alter User test1 Identified 
With sha256_password By '111111' Password Expire;

查看修改后用户的密码:

Select authentication_string From mysql.user 
Where user='test1' And plugin='shan256_password';

在这里插入图片描述
解锁用户:

Alter user 'test7'@'localhost' Account Unlock;

同时修改多个用户资源:

Alter User 'test' Identified
 With mysql_native_password,
'test2'@'localhost' Identified By '222222' 
With max_user_connections 2;

4.删除用户
DROP USER[ IF EXISTS]账户名[,账户名]…;

Drop User If Exists test7;

在删除账户时,如果省略主机地址,则默认为’%’.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值