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

  • IF EXISTS的含义
  • user的指定
  • auth_option选项
  • IDENTIFIED BY 'auth_string'
  • IDENTIFIED WITH auth_plugin
  • IDENTIFIED WITH auth_plugin BY 'auth_string'
  • IDENTIFIED WITH auth_plugin AS 'auth_string'
  • tls_option选项
  • resource_option选项
  • password_option选项
  • lock_option选项
修改用户的语法在MySQL中修改用户的语法如下:
ALTER USER [IF EXISTS]user [auth_option] [, user [auth_option]] ...[REQUIRE {NONE | tls_option [[AND] tls_option] ...}][WITH resource_option [resource_option] ...][password_option | lock_option] ...ALTER USER [IF EXISTS]USER() IDENTIFIED BY 'auth_string'user:(see Section 6.2.4, “Specifying Account Names”)auth_option: {IDENTIFIED BY 'auth_string'| IDENTIFIED WITH auth_plugin| IDENTIFIED WITH auth_plugin BY 'auth_string'| IDENTIFIED WITH auth_plugin AS 'auth_string'}tls_option: {SSL | X509 | CIPHER 'cipher' | ISSUER 'issuer' | SUBJECT 'subject'}resource_option: {MAX_QUERIES_PER_HOUR count| MAX_UPDATES_PER_HOUR count| MAX_CONNECTIONS_PER_HOUR count| MAX_USER_CONNECTIONS count}password_option: {PASSWORD EXPIRE| PASSWORD EXPIRE DEFAULT| PASSWORD EXPIRE NEVER| PASSWORD EXPIRE INTERVAL N DAY}lock_option: {ACCOUNT LOCK| ACCOUNT UNLOCK}看了这么一大坨东西,感觉啥也没有告诉我,一脸懵逼 。下面我们一起来解读一下具体的每一个选项的含义 。
IF EXISTS的含义对于这个大家应该有所了解 。
[IF EXISTS]首先它是被中括号包裹起来的,表示是可选的不是必须的,也就是说在我们的alter user语句中,这个IF EXISTS可以不出现不是必须要写的 。但是为什么还要有这个呢,这个选项出现的目的是为了让你在执行一个alter user语句的时候,如果语句中指定的数据库用户不存在(或者你写用户名称的是写错了),而不至于出现一个错误的信息,如果指定了IF EXISTS这个词,他就会以一个警告的信息提示你而不是直接给你一个错误信息 。
更直白一下就是:如果你的alter user的语句中指定的用户确实存在,那么就执行你的语句,如果不存在呢,就不执行你的语句,跳过这个alter user的指令 。看示例:
mysql> alter user 'zhangsanfeng' identified by 'zhangsanfeng';ERROR 1396 (HY000): Operation ALTER USER failed for 'zhangsanfeng'@'%'mysql>mysql> alter user if exists 'zhangsanfeng' identified by 'zhangsanfeng';Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> show warnings;+-------+------+-----------------------------------------+| Level | Code | Message|+-------+------+-----------------------------------------+| Note| 3162 | User 'zhangsanfeng'@'%' does not exist. |+-------+------+-----------------------------------------+1 row in set (0.00 sec)mysql>在上面的例子中,第一个修改用户的语句,没有使用if exists关键词直接修改了一个不存在的用户的信息,结果直接出现了错误信息,接着我们使用了if exists关键词,结果SQL语句执行成功,只是出现了一个warning警告,然后我们通过show warnings命令查看警告信息的内容,提示我们用户'zhangsanfeng'@'%'不存在 。这就是if exists关键词的存在的意义 。
注意:当我们指定MySQL数据库用户的时候,如果我们不显示的指定用户的host网段,则默认使用%来代替 。所以,我们看到我们输入的是'zhangsanfeng'但是提示的却是'zhangsanfeng'@'%' 。
user的指定当我们修改一个用户的信息的时候,我们需要指定用户的名称 。这个名称,不仅仅使我们平时登录数据库的时候,输入的用户的名字,还有一个隐含的部分就是用户登录的host网段,这个网段表示只允许该用户通过这个网段登录,如果用户不在这个定义的网段内,即便是用户名和密码正确,也不能争取的登录 。
下面的创建用户是两个不同的用户 。
create user 'zhangsanfeng'@'10.10.10.11' identified by '123456';create user 'zhangsanfeng'@'192.168.1.100' identified by 'zhangsanfeng';上面的两个用户中,分别表示如下: