创建用户[如果不存在]用户[auth_option] [,用户[auth_option]]…默认角色角色(,角色)……[require {none | .tls_option[[和]tls_option)……}] [与resource_option[resource_option)……] [password_option|lock_option)……(评论comment_string' |属性'json_object']用户:(参见第6.2.4节“指定帐户名称”)auth_option:{由'标识auth_string' |由随机密码|由auth_plugin|与auth_plugin由“auth_string' |与auth_plugin由随机密码|识别auth_plugin为“auth_string'}tls_option: {SSL | x509 |密码'密码“|发行者”发行人' | subject '主题'}resource_option: {max_queries_per_hour数| MAX_UPDATES_PER_HOUR数| MAX_CONNECTIONS_PER_HOUR数| MAX_USER_CONNECTIONS数}password_option: {password expire [default | never | interval .N|密码历史{默认|N} |密码重用间隔{默认| .NDay} | password require current [default | optional] | failed_login_attempts .[默认|可选N|密码锁时间{N| unbounded}}lock_option:{帐户锁定|帐户解锁}
的创建用户
语句创建新的MySQL帐户。它允许为新帐户建立身份验证、角色、SSL/TLS、资源限制、密码管理、评论和属性属性。它还可以控制帐户最初是锁定还是解锁。
使用创建用户
,你必须有全局创建用户
特权,或者插入
特权mysql
系统模式。当read_only
系统变量已启用,创建用户
另外还要求CONNECTION_ADMIN
特权(或已弃用的特权超级
特权)。
从MySQL 8.0.22开始,创建用户
如果要创建的任何帐户命名为定义者
属性用于任何存储对象。(也就是说,如果创建帐户将导致帐户采用当前孤立的存储对象,则语句失败。)要执行该操作,您必须具有SET_USER_ID
特权;在这种情况下,语句成功并发出警告,而不是失败并出现错误。没有SET_USER_ID
,执行用户创建操作,删除孤立对象,创建帐户并授予其权限,然后重新创建被删除的对象。有关其他信息,包括如何识别哪些对象将给定帐户命名为定义者
属性,看到孤儿存储对象.
创建用户
对于所有指定的用户,要么成功,要么回滚,如果发生任何错误,则无效。默认情况下,如果尝试创建一个已经存在的用户,将会发生错误。如果如果不存在
子句时,该语句将为已经存在的每个已命名用户生成警告,而不是错误。
在某些情况下,创建用户
可以记录在服务器日志或客户端的历史文件中,例如~ / .mysql_history
,这意味着任何对该信息有读访问权的人都可能读取明文密码。有关服务器日志发生这种情况的条件以及如何控制它的信息,请参见第6.1.2.3节“密码及登入”.有关客户端日志记录的类似信息,请参见章节4.5.1.3,“mysql客户端日志”.
有几个方面创建用户
声明,在以下主题下进行说明:
对于每个账户,创建用户
对象中创建新行mysql.user
系统表。帐户行反映了语句中指定的属性。未指定的属性被设置为默认值:
Authentication:默认的身份验证插件(如默认认证插件),以及空白的凭证
默认角色:
没有一个
SSL / TLS:
没有一个
资源限制:无限
密码管理:
密码过期默认密码历史默认密码重用间隔默认密码要求当前默认
;禁用失败登录跟踪和临时帐户锁定帐户锁定:
账号解锁
帐户在首次创建时没有任何特权,默认角色为没有一个
.要分配特权或角色,请使用格兰特
声明。
每个帐户名称使用中描述的格式章节6.2.4,“指定帐户名称”.例如:
创建用户“jeffrey”@“localhost”密码”;
帐户名的主机名部分,如果省略,默认为“%”
.
每一个用户
值命名帐户,后面可以跟着一个可选参数auth_option
值,该值指示帐户如何进行身份验证。这些值允许指定帐户身份验证插件和凭据(例如,密码)。每一个auth_option
应用价值只有到紧挨着名字的账户。
后,用户
在规范中,该语句可能包括SSL/TLS、资源限制、密码管理和锁定属性的选项。所有这些选项都是全球以陈述并适用于所有报表中提到的账户。
示例:创建一个使用默认认证插件和给定密码的帐户。标记密码过期,以便用户在第一次连接到服务器时选择一个新密码:
创建用户“jeffrey”@“localhost”new_password'密码过期;
示例:创建一个使用caching_sha2_password
身份验证插件和给定的密码。要求每180天选择一个新密码,并启用失败登录跟踪,这样连续三个错误的密码会导致帐户临时锁定两天:
创建用户'jeffrey'@'localhost' IDENTIFIED WITH cache_sha2_password BY 'new_password'密码过期间隔180天failed_login_attempts 3 password_lock_time 2;
示例:创建多个帐户,指定一些每个帐户的属性和一些全局属性:
创建mysql_native_password用户jeffrey @ localhostnew_password1', 'jeanne'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'new_password2' require x509 with max_queries_per_hour 60 password history 5 account lock;
每一个auth_option
值(认同……通过
在这种情况下)只适用于紧挨着它命名的帐户,所以每个帐户使用紧跟着的身份验证插件和密码。
其余属性全局应用于语句中命名的所有帐户,因此对于这两个帐户:
必须使用有效的X.509证书进行连接。
每小时最多允许60个查询。
修改密码时不能重复使用最近的5个密码。
该帐户最初是锁定的,因此实际上它是一个占位符,在管理员解锁之前不能使用。
帐户名后面可以跟着auth_option
身份验证选项,指定帐户身份验证插件、凭据或两者。
生成随机密码的子句仅适用于使用身份验证插件的帐户,该插件在MySQL内部存储凭据。对于使用插件对MySQL外部的凭据系统执行身份验证的帐户,密码管理也必须在外部对该系统进行处理。有关内部凭证存储的详细信息,请参见章节6.2.15“密码管理”.
auth_plugin
命名一个认证插件。插件名可以是带引号的字符串文字,也可以是不带引号的名称。插件名称存储在插件
的列mysql.user
系统表。为
auth_option
语法中没有指定身份验证插件时,服务器分配默认插件,如中所述确定默认认证插件.有关每个插件的描述,请参见章节6.4.1,“认证插件”.内部存储的凭据存储在
mysql.user
系统表。一个'
值或auth_string
'随机密码
指定帐户凭据,可以是明文(未加密)字符串,也可以是与帐户相关的身份验证插件所期望的散列格式:对于使用
由“
,该字符串是明文,并被传递给身份验证插件以进行可能的哈希。插件返回的结果存储在auth_string
'mysql.user
表格插件可以使用指定的值,在这种情况下不会发生哈希。对于使用
随机密码
, MySQL生成一个随机密码和明文,并将其传递给身份验证插件,以进行可能的哈希。插件返回的结果存储在mysql.user
表格插件可以使用指定的值,在这种情况下不会发生哈希。随机生成的密码在MySQL 8.0.18中可用,并具有中描述的特征随机密码生成.
对于使用
为“
时,假定该字符串已经具有身份验证插件所需的格式,并按auth_string
'mysql.user
表格如果一个插件需要一个散列值,该值必须已经以适合该插件的格式散列;否则,该值不能被插件使用,客户端连接的正确身份验证也不会发生。从MySQL 8.0.17开始,散列字符串既可以是字符串字面值,也可以是十六进制值。后者对应于显示的值的类型
显示创建用户
对于包含不可打印字符的密码哈希print_identified_with_as_hex
启用系统变量。如果身份验证插件不执行身份验证字符串的散列,则
由“
而且auth_string
'为“
子句具有相同的效果:身份验证字符串与auth_string
'mysql.user
系统表。
创建用户
允许这些auth_option
语法:
标识为'
auth_string
'将帐户认证插件设置为默认插件,传递cleartext
'
的帐户行中存储结果auth_string
'mysql.user
系统表。随机密码识别
将帐户认证插件设置为默认插件,生成一个随机密码,将明文密码值传递给插件进行可能的散列,并将结果存储在帐户行中
mysql.user
系统表。该语句还在结果集中返回明文密码,以便执行该语句的用户或应用程序可以使用该密码。随机生成密码的结果集和特征请参见随机密码生成.认同
auth_plugin
将帐户身份验证插件设置为
auth_plugin
,将凭据清除到空字符串,并将结果存储在mysql.user
系统表。认同
auth_plugin
由“auth_string
'将帐户身份验证插件设置为
auth_plugin
,传递明文'
的帐户行中存储结果auth_string
'mysql.user
系统表。认同
auth_plugin
随机密码将帐户身份验证插件设置为
auth_plugin
,生成一个随机密码,将明文密码值传递给插件进行可能的散列,并将结果存储在mysql.user
系统表。该语句还在结果集中返回明文密码,以便执行该语句的用户或应用程序可以使用该密码。随机生成密码的结果集和特征请参见随机密码生成.认同
auth_plugin
为“auth_string
'将帐户身份验证插件设置为
auth_plugin
并存储'
的值auth_string
'mysql.user
账户行。如果插件需要一个散列字符串,则假定该字符串已经按照插件要求的格式散列了。
示例:指定密码为cleartext;使用默认插件:
创建用户“jeffrey”@“localhost”密码”;
示例:指定认证插件,以及一个明文密码值:
创建mysql_native_password用户jeffrey @ localhost密码”;
在每种情况下,帐户行中存储的密码值都是明文值'
在它被与该帐户关联的身份验证插件散列之后。密码
'
有关设置密码和身份验证插件的其他信息,请参见第6.2.14节“分配帐户密码”,第6.2.17节“可插拔身份验证”.
的默认角色
子句定义当用户连接到服务器并进行身份验证时,或当用户执行设置角色default
会话期间的语句。
每个角色名称使用中描述的格式章节6.2.5,“指定角色名”.例如:
创建用户'joe'@'10.0.0.1'
如果省略角色名的主机名部分,默认为“%”
.
的默认角色
子句允许一个或多个以逗号分隔的角色名的列表。这些角色必须在当时存在创建用户
执行;否则,语句将引发错误(ER_USER_DOES_NOT_EXIST
),不会创建该用户。
MySQL可以检查X.509证书属性,除了通常的基于用户名和凭证的身份验证。有关在MySQL中使用SSL/TLS的背景信息,请参见第6.3节“使用加密连接”.
要为MySQL帐户指定与SSL/ tls相关的选项,请使用需要
子句,指定一个或多个tls_option
值。
的顺序需要
选项无关紧要,但任何选项都不能指定两次。的和
关键字是可选的需要
选项。
创建用户
允许这些tls_option
价值观:
没有一个
指示由该语句命名的所有帐户没有SSL或X.509要求。如果用户名和密码有效,则允许未加密的连接。如果客户端拥有适当的证书和密钥文件,则可以根据客户端选择使用加密连接。
创建用户jeffrey @ localhost
默认情况下,客户端尝试建立安全连接。对于有
不需要进行
,如果无法建立安全连接,则连接尝试将退回到未加密的连接。要要求加密连接,客户机只需指定——ssl-mode =要求
选择;如果无法建立安全连接,则连接尝试失败。没有一个
如果没有ssl相关,默认是什么需要
指定选项。SSL
告诉服务器只允许该语句指定的所有帐户的加密连接。
创建用户jeffrey @ localhost
默认情况下,客户端尝试建立安全连接。对于有
需要SSL
,如果无法建立安全连接,则连接尝试失败。X509
对于声明中指定的所有帐户,要求客户端提供有效的证书,但是确切的证书、颁发者和主题并不重要。唯一的要求是,应该能够使用其中一个CA证书来验证其签名。使用X.509证书总是意味着加密,因此
SSL
在这种情况下,选项是不必要的。CREATE USER 'jeffrey'@'localhost' REQUIRE X509;
适用于
需要X509
,客户端必须指定——ssl密钥
而且——ssl-cert
连接选项。(这是推荐的,但不是必须的——ssl-ca
还要指定,以便可以验证服务器提供的公共证书。)这是对的发行人
而且主题
因为这些需要
选项暗示的要求X509
.发行人的
发行人
'对于声明中指定的所有帐户,要求客户端提供由CA颁发的有效X.509证书
'
.如果客户端提供的证书是有效的,但颁发者不同,服务器将拒绝该连接。使用X.509证书总是意味着加密,因此发行人
'SSL
在这种情况下,选项是不必要的。CREATE USER 'jeffrey'@'localhost' REQUIRE ISSUER '/C=SE/ST=Stockholm/L=Stockholm/ O=MySQL/CN=CA/emailAddress=ca@example.com';
因为
发行人
包含以下要求X509
,客户端必须指定——ssl密钥
而且——ssl-cert
连接选项。(这是推荐的,但不是必须的——ssl-ca
还要指定,以便可以验证服务器提供的公共证书。)主题的
主题
'对于该语句指定的所有帐户,要求客户端提供包含该主题的有效X.509证书
主题
.如果客户端提供的证书有效但主题不同,服务器将拒绝该连接。使用X.509证书总是意味着加密,因此SSL
在这种情况下,选项是不必要的。CREATE USER 'jeffrey'@'localhost' REQUIRE SUBJECT '/C=SE/ST=Stockholm/L=Stockholm/ O=MySQL演示客户端证书/ CN=client/emailAddress=client@example.com';
的简单字符串比较
'
值与证书中的值对应,因此字母大小写和组件顺序必须与证书中给出的完全一致。主题
'因为
主题
包含以下要求X509
,客户端必须指定——ssl密钥
而且——ssl-cert
连接选项。(这是推荐的,但不是必须的——ssl-ca
还要指定,以便可以验证服务器提供的公共证书。)密码的
密码
'对于由语句命名的所有帐户,需要特定的密码方法来加密连接。需要此选项以确保使用足够强度的密码和密钥长度。如果使用使用短加密密钥的旧算法,加密可能会很弱。
CREATE USER 'jeffrey'@'localhost' REQUIRE CIPHER 'EDH-RSA-DES-CBC3-SHA';
的主题
,发行人
,密码
选项可以组合在需要
条款:
CREATE USER 'jeffrey'@'localhost' REQUIRE SUBJECT '/C=SE/ST=Stockholm/L=Stockholm/ O=MySQL demo客户端证书/CN= client/emailAddress=client@example.com' AND ISSUER '/C=SE/ST=Stockholm/L=Stockholm/ O=MySQL/CN=CA/emailAddress=ca@example.com' AND CIPHER 'EDH-RSA-DES-CBC3-SHA';
可以对帐户使用的服务器资源进行限制,如中所讨论的第6.2.20节“设置帐户资源限制”.要做到这一点,请使用与
子句,指定一个或多个resource_option
值。
的顺序与
选项无关紧要,但如果多次指定给定的资源限制,则最后一个实例优先。
创建用户
允许这些resource_option
价值观:
MAX_QUERIES_PER_HOUR
,数
MAX_UPDATES_PER_HOUR
,数
MAX_CONNECTIONS_PER_HOUR
数
对于语句指定的所有帐户,这些选项限制在任何给定的一小时内允许每个帐户进行多少次查询、更新和连接到服务器。如果
数
是0
(默认值),这意味着该帐户没有限制。MAX_USER_CONNECTIONS
数
对于由语句命名的所有帐户,限制每个帐户同时连接到服务器的最大数量。一个非零
数
显式地指定帐户的限制。如果数
是0
的全局值确定该帐户的同时连接数(默认值)max_user_connections
系统变量。如果max_user_connections
也是零,对账户没有限制。
例子:
创建用户'jeffrey'@'localhost', MAX_QUERIES_PER_HOUR 500;
创建用户
支持多种password_option
密码管理取值:
密码过期选项:用户可以手动设置帐户密码过期策略。策略选项不会使密码过期。相反,它们决定服务器如何根据密码年龄对帐户应用自动过期,密码年龄是根据最近帐户密码更改的日期和时间来评估的。
密码重用选项:可以根据密码更改次数、时间或两者同时限制密码重用。
密码验证所需选项:您可以指示尝试更改帐户密码时是否必须指定当前密码,以验证试图进行更改的用户实际上知道当前密码。
错误密码登录失败跟踪选项:您可以使服务器跟踪失败的登录尝试,并临时锁定连续多次输入错误密码的帐户。所需的失败次数和锁定时间是可配置的。
介绍密码管理选项的语法。有关建立密码管理策略的信息,请参见章节6.2.15“密码管理”.
如果指定了给定类型的多个密码管理选项,则最后一个优先。例如,Password expire默认密码永不过期
和密码永不过期
.
除了与失败登录跟踪相关的选项外,密码管理选项仅适用于使用身份验证插件的帐户,该插件在MySQL内部存储凭据。对于使用插件对MySQL外部的凭据系统执行身份验证的帐户,密码管理也必须在外部对该系统进行处理。有关内部凭证存储的详细信息,请参见章节6.2.15“密码管理”.
如果帐户密码手动过期,或者根据自动过期策略,认为密码年龄大于其允许的生命期,则客户端具有过期的密码。在这种情况下,服务器要么断开客户端连接,要么限制允许它进行的操作(参见章节6.2.16“服务器对过期密码的处理”).受限制的客户端执行的操作将导致错误,直到用户建立新的帐户密码。
创建用户
允许这些password_option
密码过期控制值:
密码到期
立即标记该语句指定的所有帐户的密码过期。
创建用户jeffrey @ localhost密码过期;
密码过期default
属性所指定的,设置由语句命名的所有帐户,以便应用全局过期策略
default_password_lifetime
系统变量。创建用户jeffrey @ localhost密码过期
密码永不过期
此过期选项将覆盖该语句指定的所有帐户的全局策略。对于每一个,它都禁用密码过期,以便密码永远不会过期。
创建用户jeffrey @ localhost密码过期
密码过期时间
N
一天此过期选项将覆盖该语句指定的所有帐户的全局策略。对于每一个,它将密码生存期设置为
N
天。下面的语句要求密码每180天修改一次:创建用户'jeffrey'@'localhost'密码过期间隔180天
创建用户
允许这些password_option
基于最小密码修改次数控制以前密码重复使用的值:
密码历史默认
属性所指定的更改次数之前,设置由该语句命名的所有帐户,以便应用关于密码历史长度的全局策略,以禁止重复使用密码
password_history
系统变量。创建用户'jeffrey'@'localhost'
密码历史
N
这个历史长度选项将覆盖由语句命名的所有帐户的全局策略。对于每一个,它将密码历史长度设置为
N
密码,禁止重复使用的任何N
最近选择的密码。下面的语句禁止重复使用前6个密码中的任何一个:创建用户'jeffrey'@'localhost'
创建用户
允许这些password_option
基于时间间隔的旧密码重用控制:
密码重用间隔default
属性所指定的天数更新的密码,将设置以帐户命名的所有语句,以便应用关于时间流逝的全局策略,以禁止重复使用更新于该帐户指定天数的密码
password_reuse_interval
系统变量。创建用户'jeffrey'@'localhost'密码重用间隔默认值;
密码重用间隔
N
一天此时间流逝选项将覆盖该语句命名的所有帐户的全局策略。对于每一个,它将密码重用间隔设置为
N
天,以禁止重复使用超过这个天数的密码。以下语句禁止密码重复使用360天:创建用户'jeffrey'@'localhost'密码重复使用间隔360天;
创建用户
允许这些password_option
用于控制尝试更改帐户密码是否必须指定当前密码的值,以验证尝试更改帐户密码的用户实际上知道当前密码:
密码要求电流
此验证选项将覆盖由语句命名的所有帐户的全局策略。对于每一种情况,它都要求密码更改指定当前密码。
创建用户jeffrey @ localhost密码
密码要求当前可选
此验证选项将覆盖由语句命名的所有帐户的全局策略。对于每一种方法,它都不要求修改密码时指定当前密码。(可提供但不必提供当前密码。)
创建用户'jeffrey'@'localhost'密码要求当前可选;
密码要求当前默认
属性所指定的,设置以帐户命名的所有语句,以便应用关于密码验证的全局策略
password_require_current
系统变量。创建用户'jeffrey'@'localhost'密码要求当前默认值;
从MySQL 8.0.19开始,创建用户
允许这些password_option
控制登录失败跟踪的值:
FAILED_LOGIN_ATTEMPTS
N
是否跟踪指定错误密码的帐户登录尝试。
N
必须是0到32767之间的数字。值为0将禁用失败登录跟踪。大于0的值表示连续多少次密码失败导致临时帐户锁定(如果PASSWORD_LOCK_TIME
也是非零的)。PASSWORD_LOCK_TIME {
N
|无限}在多次连续登录尝试提供错误密码后,多长时间锁定帐户。
N
必须是0到32767之间的数字,还是无限
.值为0禁用临时帐户锁定。值大于0表示锁定天数。值为无限
导致帐号锁定时间不受限制;一旦锁定,帐户将一直处于锁定状态,直到解锁为止。有关发生解锁的条件的信息,请参见登录失败跟踪和临时帐户锁定.
对于失败的登录跟踪和临时锁定发生,帐户的FAILED_LOGIN_ATTEMPTS
而且PASSWORD_LOCK_TIME
选项都必须非零。下面的语句将创建一个连续4次密码失败后仍被锁定2天的帐户:
CREATE USER 'jeffrey'@'localhost' FAILED_LOGIN_ATTEMPTS 4 PASSWORD_LOCK_TIME 2;
从MySQL 8.0.21开始,你可以创建一个带有可选注释或属性的帐户,如下所述:
用户评论
若要设置用户注释,请添加
评论的
到user_comment
'创建用户
声明,user_comment
是用户注释的文本。示例(省略任何其他选项):
CREATE USER 'jon'@'localhost' COMMENT '关于jon的一些信息';
用户属性
用户属性是一个JSON对象,由一个或多个键值对组成,通过include设置
属性”
作为的一部分json_object
'创建用户
.json_object
必须是有效的JSON对象。示例(省略任何其他选项):
创建用户'jim'@'localhost' ATTRIBUTE '{"fname": "James", "lname": "Scott", "phone": "123-456-7890"}';
用户注释和用户属性一起存储在属性
的列INFORMATION_SCHEMA。USER_ATTRIBUTES
表格该查询显示由刚刚为创建用户而显示的语句插入的表中的行jim@localhost
:
mysql> SELECT * FROM INFORMATION_SCHEMAUSER_ATTRIBUTES-> WHERE USER = 'jim' AND HOST = 'localhost'\G *************************** 1. row *************************** USER: jim HOST: localhost ATTRIBUTE: {"fname": "James", "lname": "Scott", "phone": "123-456-7890"} 1 row in set (0.00 sec)
的评论
选项实际上提供了设置用户属性的快捷方式,该用户属性的唯一元素为评论
作为它的键,其值是为选项提供的参数。您可以通过执行语句来查看这一点创建用户“jon”@“localhost”COMMENT“jon的一些信息”
,并观察它插入到的行USER_ATTRIBUTES
表:
mysql> CREATE USER 'jon'@'localhost' COMMENT '一些关于jon的信息';mysql> SELECT * FROM INFORMATION_SCHEMA(0.06秒)USER_ATTRIBUTES -> WHERE USER = 'jon' AND HOST = 'localhost';+------+-----------+-------------------------------------------+ | 主机用户| |属性 | +------+-----------+-------------------------------------------+ | jon | localhost |{“评论”:“有些乔恩的信息 "} | +------+-----------+-------------------------------------------+ 1行集(0.00秒)
你不能使用评论
而且属性
在同一个世界里创建用户
声明;尝试这样做会导致语法错误。要在设置用户属性的同时设置用户注释,请使用属性
并在其参数中包含一个带有a的值评论
键,像这样:
mysql> CREATE USER 'bill'@'localhost' -> ATTRIBUTE '{"fname":"William", "lname":"Schmidt", -> "comment":"Website developer"}';查询OK, 0行受影响(0.16秒)
自的内容属性
row是一个JSON对象,你可以使用任何合适的MySQL JSON函数或操作符来操作它,如下所示:
mysql> SELECT -> USER AS USER, -> HOST AS HOST, -> CONCAT(ATTRIBUTE->>"$。fname"," ",ATTRIBUTE->>"$.lname") AS '全名',-> ATTRIBUTE->>"$. Comment " AS Comment -> FROM INFORMATION_SCHEMA。USER_ATTRIBUTES -> WHERE USER='bill' AND HOST='localhost';+------+-----------+-----------------+-------------------+ | 主机用户| |全名|发表评论 | +------+-----------+-----------------+-------------------+ | 比尔| localhost |威廉·施密特|网站开发人员 | +------+-----------+-----------------+-------------------+ 1行集(0.00秒)
要为现有用户设置或更改用户注释或用户属性,可以使用评论
或属性
选项带有改变用户
声明。
因为用户注释和用户属性一起存储在一个单独的JSON
列,这设置了它们的最大组合大小的上限;看到JSON存储要求,以获取更多资料。
另请参阅信息模式的描述USER_ATTRIBUTES
表提供更多信息和示例。
创建用户
如果成功则写入二进制日志,如果失败则不写入;在这种情况下,将发生回滚,不进行任何更改。写入二进制日志的语句包括所有已命名用户。如果如果不存在
子句,这甚至包括已经存在且未创建的用户。
写入二进制日志的语句为每个用户指定一个身份验证插件,确定如下:
原语句中指定的插件。
否则,默认认证插件。特别是,如果是用户
u1
已经存在并使用非默认身份验证插件,语句写入二进制日志如果u1不存在,创建用户
命名默认的身份验证插件。(如果写入二进制日志的语句必须为用户指定非默认身份验证插件,则将其包含在原始语句中。)
如果服务器在写入二进制日志的语句中为任何不存在的用户添加了默认的身份验证插件,它会向错误日志中写入一个命名这些用户的警告。
如果原始语句指定FAILED_LOGIN_ATTEMPTS
或PASSWORD_LOCK_TIME
选项,写入二进制日志的语句包含该选项。