- 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选项
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';
上面的两个用户中,分别表示如下:- zhangsanfeng只允许在IP地址为10.10.10.11的主机上用密码123456登录 。如果它在IP地址为192.168.1.100的主机上用密码123456是不能登录成功的 。
- zhangsanfeng只允许在IP地址为192.168.1.100的主机上用密码zhangsanfeng登录 。如果它在IP地址为10.10.10.11的主机上用密码zhangsanfeng是不能登录成功的 。
推荐阅读
- 如何使用 .NET Core 安全地加/解密文件
- 运动相机存储卡如何选购?铠侠极至瞬速microSD卡耐用又实惠
- 微信图片过期怎么办?如何查看微信过期图片?3步即可
- JustAuthPlus - 模块化的开源登录认证中间件
- 低代码平台开发速度如何?让我们来测评下吧
- JS中树的查找:通过子节点ID查找所有关联的父节点
- Windows 文件审核 – 如何保护服务器上的文件
- 入驻头条30天,我是如何用7条视频把收益做到这种水平的
- list python数据类型-列表
- 本地新项目如何推送到gitlab仓库