MySQL中如何修改用户各种信息( 三 )


?Downloads mysql -uxyz -p -h10.2.1.7Enter password:Welcome to the MySQL monitor.Commands end with ; or g.Your MySQL connection id is 45197703Server version: 5.7.25-logCopyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.mysql> select version();ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. # 这里提示需要修改完成密码之后才可以执行其他SQL语句命令 。mysql> alter user xyz identified by 'xyz';Query OK, 0 rows affected (0.10 sec)mysql> select version();+------------+| version()|+------------+| 5.7.25-log |+------------+1 row in set (0.01 sec)mysql> select user, host, plugin, authentication_string from mysql.user where user ='xyz';+------+------+-----------------+---------------------------------------------------------------------+| user | host | plugin| authentication_string|+------+------+-----------------+---------------------------------------------------------------------+| xyz| %| sha256_password | $5$Jmq<rS]t?F]~WUfR]$LVplZGG4HlLuHcoXEnXXFtBHARd8vkeWoLUu/uEN0ZC |+------+------+-----------------+---------------------------------------------------------------------+1 row in set (0.02 sec)mysql>

注意:当我们尝试使用sha256_password作为密码认证插件的时候,则必须使用SSL加密连接的方式连接到MySQL数据库,也就是需要为MySQL服务器端配置OpenSSL证书之后才可以正常连接到MySQL数据库 。
IDENTIFIED WITH auth_plugin BY 'auth_string'指定用户的密码认证插件,并设置密码 。
当我们想给用户指定密码的认证插件,并且想为其设置密码的时候,可以使用这个命令,示例如下:
alter user xyz identified with mysql_native_password by 'xyz';这样用户xyz的密码认证方式修改为了mysql_native_password,并且修改它的密码为xyz 。需要我们主要的是by关键字后面跟的是密码的明文,也就是我们尝试登录的时候,输入的密码的值 。
IDENTIFIED WITH auth_plugin AS 'auth_string'指定用户的密码认证插件,并设置密码 。
当我们想给用户指定密码的认证插件,并且想为其设置密码的时候,可以使用这个命令,示例如下:
alter user xyz identified with mysql_native_password as '*39C549BDECFBA8AFC3CE6B948C9359A0ECE08DE2';这样用户xyz的密码认证方式修改为了mysql_native_password,并且修改它的密码为xyz 。需要我们主要的是as关键字后面跟的是加密后的密码,而不是我们的明文的密码 。如果我们想知道得到一个加密后的密码,则可以使用下面password()函数来得到加密后的密码 。
mysql> select password('xyz');+-------------------------------------------+| password('xyz')|+-------------------------------------------+| *39C549BDECFBA8AFC3CE6B948C9359A0ECE08DE2 |+-------------------------------------------+1 row in set, 1 warning (0.02 sec)mysql>tls_option选项tls_option: {SSL | X509 | CIPHER 'cipher' | ISSUER 'issuer' | SUBJECT 'subject'}这里主要是指定用户在连接到MySQL数据库的时候,是否需要使用加密的方式,如果使用加密的方式,则需要启用SSL加密协议,同时也需要对MySQL进行证书的配置 。
考虑到性能的问题,使用TLS加密的方式连接MySQL数据库会对MySQL数据库的性能有一定的影响 。非必要情况下,一般不建议启用TLS加密连接到数据库,因为大家的MySQL数据库一般都是针对内网开放的 。所以,启用TLS加密协议连接没有必要 。
resource_option选项resource_option: {MAX_QUERIES_PER_HOUR count| MAX_UPDATES_PER_HOUR count| MAX_CONNECTIONS_PER_HOUR count| MAX_USER_CONNECTIONS count}resource_option选项中,主要是为每一个用户设置它所能使用到资源,做资源的使用限制 。示例如下:
mysql> alter user xyz with max_queries_per_hour 100; /*限制每小时最多发起100个查询语句*/Query OK, 0 rows affected (0.02 sec)mysql> alter user xyz with max_updates_per_hour 50; /*限制每小时最多发起50个更新语句*/Query OK, 0 rows affected (0.01 sec)mysql> alter user xyz with max_connections_per_hour 70; /*限制每小时最多建立70个连接*/Query OK, 0 rows affected (0.01 sec)mysql> alter user xyz with max_user_connections 80; /*限制用户最多同时建立80个连接,超过80个同时在线的连接后,在请求建立新连接将会失败 。*/Query OK, 0 rows affected (0.01 sec)mysql>上面四个参数的值如果为0,则表示对应的资源限制不做任何限制 。


推荐阅读