本节介绍如何创建用户帐户。它演示了配置密码过期策略、使用与安全相关的CREATE USER
选项、授予用户权限以及验证用户权限和身份验证。
创建了两个用户帐户:user1
和
user2
。该user1
帐户使用需要加密连接的 SSL/TLS 选项定义。该user2
帐户的定义没有 SSL/TLS 选项 ( REQUIRE NONE
),因此它可用于演示通过未加密连接与服务器进行基于 RSA 密钥对的密码交换。
-
定义全局自动密码过期策略。在以下步骤中创建的用户帐户使用
default_password_lifetime
系统变量定义的策略。默认设置为 0,即禁用自动密码过期。要让密码以全局定义的时间间隔(例如每 120 天)自动过期,请[mysqld]
在 MySQL 配置文件 (/etc/my.cnf
) 的选项组下添加一个类似于此的条目:default_password_lifetime=120
重新启动服务器以应用配置更改:
$> systemctl restart mysqld
-
以根身份登录。
$> cd /usr/local/mysql $> bin/mysql -u root -p Enter password: (enter root password here)
-
创建用户帐户。以下语句创建名为 和 的用户帐户,其中和 是客户端主机的 IP 地址。这些语句包括与安全相关的选项,用于启用身份验证、定义 SSL/TLS 要求、限制服务器资源使用和管理密码过期。
'user1'@'
203.0.113.11
''user1'@'
203.0.113.12
203.0.113.11
203.0.113.12
mysql> CREATE USER 'user1'@'203.0.113.11' IDENTIFIED WITH sha256_password BY 'password' REQUIRE X509 WITH MAX_USER_CONNECTIONS 3 PASSWORD EXPIRE DEFAULT;
mysql> CREATE USER 'user2'@'203.0.113.12' IDENTIFIED WITH sha256_password BY 'password' REQUIRE NONE WITH MAX_USER_CONNECTIONS 3 PASSWORD EXPIRE DEFAULT;
CREATE USER
语句选项:-
IDENTIFIED WITH sha256_password BY '
password
'将账户认证插件设置为
sha256_password
,将明文password
值传递给插件进行哈希处理,并将结果存储在mysql.user
账户行中。笔记指定的
password
值必须符合validate_password
插件启用的密码策略。密码策略要求密码长度至少为 8 个字符,至少包含 1 个数字字符、1 个小写字符、1 个大写字符和 1 个特殊(非字母数字)字符。请参阅 第 6 章,安装 MySQL 密码验证插件。有关详细信息,请参阅 创建用户身份验证选项。
-
REQUIRE X509
此 SSL/TLS 选项仅用于
user1
帐户。除了通常基于用户名和凭据的身份验证之外,MySQL 还可以检查 X509 证书属性。可用的 SSL/TLS 选项包括
SSL
、X509
、ISSUER
、SUBJECT
和CIPHER
。CREATE USER
声明使用选项user1
,X509
要求客户端出示有效证书,但确切的证书、颁发者和主题无关紧要。唯一的要求是应该可以使用其中一个 CA 证书来验证其签名。用于X509
certificates 总是暗示加密,所以没有必要也指定SSL
选项。有关详细信息,请参阅 创建用户 SSL/TLS 选项。
-
REQUIRE NONE
表示该账户没有
TLS
或没有X509
要求。如果用户名和密码有效,则允许未加密的连接。如果客户端具有适当的证书和密钥文件,则可以根据客户端的选择使用加密连接。NONE
如果未指定与 SSL 相关的REQUIRE
选项,则为默认值。有关详细信息,请参阅 创建用户 SSL/TLS 选项。
-
MAX_USER_CONNECTIONS 3
限制帐户同时连接到服务器的最大数量。
max_user_connections
如果数字为 0(默认值),则服务器根据系统变量的全局值确定该帐户的同时连接数 。MAX_USER_CONNECTIONS 3
意味着该帐户最多可以同时连接到服务器 3 个。此处未使用的其他资源限制选项包括
MAX_QUERIES_PER_HOUR
、MAX_UPDATES_PER_HOUR
和MAX_CONNECTIONS_PER_HOUR
。有关更多信息,请参阅 CREATE USER 资源限制选项。 -
PASSWORD EXPIRE DEFAULT
default_password_lifetime
应用由系统变量 定义的全局自动密码过期策略 。在前面的步骤中,default_password_lifetime
设置为 120,以便密码每 120 天自动过期一次。其他密码过期选项包括
PASSWORD EXPIRE
、PASSWORD EXPIRE INTERVAL
和PASSWORD EXPIRE NEVER
。有关详细信息,请参阅 创建用户密码管理选项。
-
-
授予用户权限。以下语句将
SHOW DATABASES
权限 授予user1
和user2
帐户:mysql> GRANT SHOW DATABASES ON *.* TO 'user1'@'203.0.113.11';
mysql> GRANT SHOW DATABASES ON *.* TO 'user2'@'203.0.113.12';
有关授予权限的更多信息,请参阅 GRANT 语句。
-
要验证授予用户帐户的权限,请发出
SHOW GRANTS
声明。例如:mysql> SHOW GRANTS FOR 'user1'@'203.0.113.11'; +-----------------------------------------------------------------------------------+ | Grants for user1@203.0.113.11 | +-----------------------------------------------------------------------------------+ | GRANT SHOW DATABASES ON *.* TO 'user1'@'203.0.113.11' | +-----------------------------------------------------------------------------------+
-
要验证帐户是否使用预期的身份验证插件,请发出此查询:
mysql> SELECT user, plugin FROM mysql.user WHERE user LIKE ('user%')\G *************************** 1. row *************************** user: user1 plugin: sha256_password *************************** 2. row *************************** user: user2 plugin: sha256_password