30.MySQL中的用户与权限概述

用户是数据库的使用者和管理者。 MySQL通过用户的设置来控制数据库操作人员的访问与操作范围。 服务器中名为mysql的数据库,用于维护数据库的用户以及权限的控制和管理。 MySQL中的所有用户信息都保存在mysql.user数据表中。

根据mysql.user表字段的功能可将其分为6类

  1. 客户端访问服务器的账号字段

  2. 验证用户身份的字段

  3. 安全连接的字段

  4. 资源限制的字段

  5. 权限字段

  6. 账户是否锁定的字段

1.账号字段

Host和User字段共同组成的复合主键用于区分MySQL中的账户

  1. User字段用于代表用户的名称。

  2. Host字段表示允许访问的客户端IP地址或主机地址。

  3. 当Host的值为“*”时,表示所有客户端的用户都可以访问。

1 SELECT host, user FROM mysql.user;
  1. root:默认的超级用户。

  2. session:MySQL5.7新增用户,用于用户身份验证。

  3. sys:MySQL5.7新增用户,用于系统模式对象的定义,防止DBA(数据库管理员)重命名或删除root用户时发生错误。

  4. 默认情况下,用户mysql.session和mysql.sys已被锁定,使得数据库操作人员无法使用这两个用户通过客户端连接MySQL服务器。因此,建议读者不要随意解锁和使用mysql.session和mysql.sys用户,否则可能会有意想不到的事情发生。

2.身份验证字段

在MySQL5.7中,mysql.user表中已不再包含Password字段,而是使用plugin和 authentication_string字段保存用户身份验证的信息

  1. plugin字段用于指定用户的验证插件名称。

  2. authentication_string字段是根据plugin指定的插件算法对账户明文密码(如123456)加密后的字符串。

1 SELECT plugin, authentication_string FROM mysql.user WHERE user=root;
  1. MySQL中root用户的默认验证插件名为mysql_native_password。

  2. authentication_string字段保存的则是一串不能看出具体含义的值,相对于能够直接看懂的明文密码(如123456),它是经过加密处理的暗码。

  3. 其他与身份验证的账号密码相关的字段还有password_expired(密码是否过期)、password_last_changed(密码最后一次修改的时间)以及password_lifetime(密码的有效期)。

3.安全连接字段

判断当前连接是否符合SSL安全协议

  1. ssl_type:用于保存安全连接的类型,它的可选值有‘‘(空)、ANY(任意类型)、X509(X509证书)、SPECIFIED(规定的)四种。

  2. ssl_cipher:用于保存安全加密连接的特定密码。

  3. x509_issuer:保存由CA签发的有效的X509证书。

  4. x509_subject:保存包含主题的有效X509证书。

通常标准的发行版MySQL已禁用SSL加密连接

1 SHOW VARIABLES LIKE have_openssl;

4.资源限制字段

  1. 以“max_”开头的字段,保存对用户可使用的服务器资源的限制。

  2. 用来防止用户登录MySQL服务器后的不法或不合规范的操作浪费服务器的资源。

  3. 用户资源限制字段默认值均为0,表示对此用户没有任何的资源限制。

  4. max_questions:保存每小时允许用户执行查询操作的最多次数。

  5. max_updates:保存每小时允许用户执行更新操作的最多次数。

  6. max_connections:保存每小时允许用户建立连接的最多次数。

  7. max_user_connections:保存允许单个用户同时建立连接的最多数量。

5.权限字段

  1. 以“_priv”结尾的字段一共有29个,这些字段保存了用户的全局权限,如Select_priv查询权限、Insert_priv插入权限,Update_priv更新权限等。

  2. user表对应的权限字段的数据类型都是ENUM枚举类型,取值只有N或Y两种。

  3. N表示该用户没有对应权限,默认值都为N。

  4. Y表示该用户有对应权限。

6.账户锁定字段

  1. account_locked字段用于保存当前用户是锁定、还是解锁状态。

  2. 该字段是一个枚举类型,当其值为N时表示解锁,此用户可以用于连接服务器。

  3. 当其值为Y时表示该用户已被锁定,不能用于连接服务器使用。

30.MySQL中的用户与权限概述

上一篇:node.js高级编程|node.js 视频教程_基于node.js+Express.js+Jade+MongoDB实战开发


下一篇:mysql 主从布置