mysql/mariadb知识点总结 之 用户管理语句

本文详细介绍了MySQL中的用户账号格式,包括username@host的结构和通配符使用。接着,讲解了如何查询用户,通过`createuser`命令或直接在`user`表中插入记录来创建用户,以及在授权过程中自动创建用户的方法。删除用户时,对比了`delete`语句和`dropuser`命令的区别,并展示了如何重命名用户。这些内容有助于理解MySQL中的用户管理和权限控制。
摘要由CSDN通过智能技术生成

目录

用户账号格式

查询用户

创建用户

删除用户

重命名用户

用户账号格式

在了解mysql的用户管理语句之前,先来了解一下mysql的用户账号格式,如下:

username@host:表示username对应的用户能够通过哪个host登录mysql。

host:此mysql用户能够通过哪些客户端主机IP登录当前服务器上的mysql服务,对于mysql来说,host可以为主机名,也可以为IP地址,但是,mysql认为主机名和IP地址属于不同的主机。例如:localhost与127.0.0.1

我们也可以使用通配符,描述客户端所在的host,常用通配符如下:

_:表示任意单个字符

%:表示任意长度的任意字符

使用通配符匹配主机的示例如下:

root@’10.1.%.%’

上述配置表示root用户可以通过10.1这个网段远程登录。

好了,了解完mysql的用户格式,我们聊聊mysql中管理用户的语句。

查询用户

我们可以切换到mysql库,查询user表,得到当前库中的用户名和其能够远程登录时所在的host

 

创建用户

我们有多种方法可以创建用户。

方法一:使用create user命令创建mysql用户,示例如下,示例中分别创建了两个用户,创建hello用户时没有设定密码,创建hello1用户时设定了密码。

create user 'hello'@'localhost';
create user 'hello1'@'localhost' identified by 'world';

方法二:直接在mysql库的user表中插入一条记录,这种方法使用较少,而且这种方法在设置了严格的sql-mode以后,无法使用。

注意:如果当前mysql数据库的sql-mode设置为了严格检查(如TRADITIONAL/STRICT_TRANS_TABLES),则无法使用上述方法插入数据,如果sql-mode已经设置为严格检查,使用上述语句时可能会出现类似如下错误:

方法三:在授权数据库的同时,如果对应的用户不存在,那么mysql将会自动创建对应的用户,比如,管理员想要授权zyl用户可以访问security数据库,但是目前zyl用户并不存在,当我们使用类似如下语句授权时,zyl@127.0.0.1用户将会自动被创建,如下语句不做过多解释,我们会在授权语句总结的文章中具体介绍它们。

grant all on security.* to zyl@127.0.0.1 identified by 'zyl218//..';

 

删除用户

我们通常使用drop命令删除用户或者直接删除mysql.user表中对应用户的记录。

这两种方法都能够删除用户,但是drop删除的更加彻底,我们一个一个来说。

删除用户方法一:使用delete语句删除mysql.user表中的用户对应的记录。

缺点:使用此方法会有相关信息残留。

上例中,使用了 delete 语句删除了 user 表中 tu@localhost 用户对应的记录,也就相当于删除了     ”tu@localhost”用户,但是,如果某些数据库的权限已经授权给了”tu@localhost”用户,那么,在mysql.db表中,”tu@localhost”用户对应的权限将不会被删除,当管理员想要再次创建该用户时,则会出现问题,如果管理员想要使用create user命令再次创建 ”tu@localhost”,可能会出现如下错误:

出现上述错误的原因有可能就是之前使用delete语句删除过同名账户,解决方法如下:

可以删除 mysql.db 表中原 ”tu@localhost” 用户残留的权限数据后,使用 flush privileges命令刷新,然后再次使用上述 create user 命令创建新的 ”tu@localhost” 用户即可,其实就是将原用户残留的数据删除干净(相当于使用drop user命令删除了用户)。

 

删除用户方法二:使用drop user命令删除对应用户,使用此方法将会同时删除mysql.user表与mysql.db表中的数据,也就是说,用户与用户对应的所有权限将被删除。

drop user stu@localhost;

 使用drop user命令不会出现使用delete语句删除用户时的情况,但是如果为了保留用户的权限,也可以选择使用delete语句删除对应记录。

重命名用户

可以使用如下语句重命名账户。

rename user OldName to NewName;

重命名后的用户的密码以及权限不会发生改变,只有用户名会发生改变。

示例如下:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值