MySQL8安全指南之账号控制与账户管理:指定账户名称

账号控制与账户管理

指定账户名称

MySQL帐户名由一个用户名和一个主机名组成,可以为从不同主机连接的具有相同用户名的用户创建不同的帐户。本节介绍帐户名的语法,包括特殊值和通配符规则。

在大多数方面,帐户名称与 MySQL 角色名称相似,但在Specifying Role Name中的描述了一些差异。

帐户名称出现在 CREATE USER、GRANTSET PASSWORD 等 SQL 语句中,并遵循以下规则:

  • 帐户名称语法是'user_name'@'host_name'

  • @'host_name'部分是可选的。只包含用户名的帐户名相当于'user_name'@'%'。例如,'me'等价于'me'@'%'

  • 如果用户名和主机名作为未加引号的标识符是合法的,则不需要加引号。如果user_name字符串包含特殊字符(如空格或-),或者host_name字符串包含特殊字符或通配符(如.%)。例如,在帐户名'test-user'@'%.com'中,用户名和主机名部分都需要引号。

  • 用户名和主机名部分必须使用引号。也就是说,写'me'@'localhost',而不是’me@localhost’。后者实际上相当于'me@localhost'@'%'

  • CURRENT_USERCURRENT_USER() 函数的引用等效于从字面上指定当前客户端的用户名和主机名。

MySQL 将帐户名称存储在 mysql 系统数据库的授权表中,用户名和主机名部分使用单独的列存储:

  • user表为每个帐户包含一行。用户和主机列存储用户名和主机名。此表还指示帐户具有哪些全局权限。

  • 其他授权表表示帐户对数据库和数据库中对象的权限。这些表有 UserHost 列来存储帐户名称。这些表中的每一行都与user表中具有相同UserHost值的帐户相关联。

  • 出于访问检查目的,User值的比较区分大小写。 Host 值的比较不区分大小写。

有关存储在授权表中的用户名和主机名属性的更多详细信息,例如最大长度,请参Grant Table Scope Column Properties

用户名和主机名具有某些特殊值或通配符约定,如下所述。

帐户名的用户名部分要么是与传入连接的用户名字面匹配的非空值,要么是与任何用户名匹配的空值(空字符串)。具有空白用户名的帐户是匿名用户。要在 SQL 语句中指定匿名用户,请使用带引号的空用户名部分,例如 ''@'localhost'

帐户名的主机名部分可以采用多种形式,并且允许使用通配符:

  • 主机值可以是主机名或 IP 地址(IPv4IPv6)。名称localhost表示本地主机。 IP地址127.0.0.1表示 IPv4 环回接口。 IP 地址::1表示 ~ 环回接口。

  • 主机名或 IP 地址值中允许使用 % 和 _ 通配符。这些与使用 LIKE 运算符执行的模式匹配操作具有相同的含义。例如,主机值 '%' 匹配任何主机名,而值 '%.mysql.com' 匹配 ~ 域中的任何主机。 '198.51.100.%' 匹配 198.51.100 C 类网络中的任何主机。

    因为在主机值中允许使用IP通配符值(例如,'198.51.100。%'来匹配子网上的每个主机),有人可能试图通过命名主机198.51.100.somewhere.com来利用这一功能。为了阻止这种尝试,MySQL不会对以数字和圆点开头的主机名进行匹配。例如,如果一个主机名为1.2.example.com,那么它的名称永远不会与帐户名称中的主机部分匹配。IP通配符只能匹配IP地址,不能匹配主机名。

  • 对于指定为 IPv4 地址的主机值,可以提供一个网络掩码以指示网络号使用多少地址位。网络掩码表示法不能用于 IPv6 地址。

    语法是host_ip/netmask。例如:

    CREATE USER 'david'@'198.51.100.0/255.255.255.0';
    

    这使 david 能够从任何具有 IP 地址为 client_ip的客户端主机进行连接。

    满足此条件的 IP 地址范围为 198.51.100.0198.51.100.255

    一个网络掩码通常以设置为1的位开始,然后是设置为0的位。例子:

    • 198.0.0.0/255.0.0.0198 A类网络上的任何主机
    • 198.51.0.0/255.255.0.0198.51 B类网络上的任何主机
    • 198.51.100.0/255.255.255.0198.51.100 C类网络上的任何主机
    • 198.51.100.1:仅具有此特定 IP 地址的主机
  • 从 MySQL 8.0.23 开始,可以使用 CIDR 表示法编写指定为 IPv4 地址的主机值,例如 198.51.100.44/24

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值