前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >生产系统如何给MySQL用户改密码

生产系统如何给MySQL用户改密码

作者头像
田帅萌
发布2019-04-25 16:18:42
3.1K0
发布2019-04-25 16:18:42
举报
文章被收录于专栏:「3306 Pai」社区「3306 Pai」社区

这是一个非常特殊的问题,有以下几种情况可能需要更改现网用户的密码:

  1. 现在数据库密码被扫描到密码属于弱密码
  2. 内网安全管理机制要求
  3. 需要阻止某些业务连接到MySQL中

在MySQL8.0以前版本,给MySQL更改密码,明确写到开发规范中,拒绝更在线更改更密码,因为在8.0以前操作非常麻烦且不太完美。

MySQL 8.0之前的处理方法:

1. 创建一个同样权限的帐号通过

show grants for ‘user_name'@’172.168.0.%';

获取到原始权限,然后创建新帐号,可以添加_vX这种形式,例如:

create user 'user_name_v2'@'172.168.0.%' identified by 'new_password';

利用show grants for获取的授权语句,对新用户授权。

2. 确认新帐号可以登录且权限Ok

3. 更新现网应用配置,并重启或是刷新配置,让配置生效

4. 删除老用户:

 mysql>drop user 'user_name'@'172.168.0.%';

通过一个变通的办法实现用一个新用户替代老用户,从而实现改用户密码的需求。但这里并不太太完美,用户名变更了。如里需要还是原来的用户名,这个感觉还需要在来一次这样的操作。

现在福利来了:

从MySQL 8.0.14版本开始,对于用户密码这块引入了一个新特性:一个用户支持同时有两个密码。

直接上操作:

上面同一个帐号两个密码都是可以登录成功。

当运行完:alter user 'wubx'@'%' discard old password; 后

原来密码: wubxwubx 已经失效。

通过这个特性对今后MySQL 8.0.14后的版本变密码流程就相对简单很多。

特别提示:想使用这个特性的用户需要具备MySQL8.0后的新权限:APPLICATION_PASSWORD_ADMIN。另外要注意以下几点:

  1. retain current password是声明当前的第二个密码,多次声明,最后一个生效。用户可以同时用原来密码和声明的新密码登录
  2. retain current password语句中不能指定空密码
  3. 在指定了retain current password后 ,又使用alter user更改原来的主密码,利用retain current password声明的第二密码不会变更。
  4. 如果在使用retain current password后,又更改认正模式,声明的第二密码失效。
  5. 如果没有使用retain current passwod,使用alter user .. discard old password ;不会把原来的密码删掉。

最后,祝各位老板玩的开心。

关于「3306π」社区

围绕 MySQL 核心技术,将互联网行业中最重要的数据化解决方案带到传统行业中;囊括其他开源技术Redis、MongoDB、Hbase、Hadoop、ElasticSearch、Storm、Spark等;分享干货知识,即便是赞助商,也要求如此,拒绝放水。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 3306pai 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档