怎样修改php连接的数据库密码错误,数据库密码热修改应该如何进行

文章讨论了在高访问量网站中如何在不中断服务的情况下修改数据库密码。提出了在配置文件中存储多个密码并重试连接的方案,并指出在MySQL协议中存在允许密码变更的机制。同时,建议在异常处理中实现密码更新以确保无缝切换。
摘要由CSDN通过智能技术生成

不知道大家能不能看懂 数据库密码热修改 这个短语的意思,就是热拔插的热(我不知道该怎么描述啊...囧),就是说在网站在运行的状态下修改数据库密码而不会出现密码错误之类的报错

我的博客(Typecho)访问量很低很低,修改数据库密码的话不用考虑报错,因为在那短短的十几秒内(在主机控制面板修改)有人访问的概率是相当相当低的。我猜测很多人/很多小网站都是这样的吧,访问量稍微大一点的话可以在夜深人静的时候进行。

那么问题来了:访问量大的网站(比如说 SF 什么的)应该如何进行数据库密码的热修改?

在写这个问题的时候我突然想到的一种解决方案是

在配置文件里把数据库密码写成一个数组,保存两个或者多个密码,每次连接时如果密码1报错那么就采用密码2进行连接。

在修改密码之前先把配置文件中无效的那个密码改成即将要修改的新密码,然后再去修改数据库密码,这样应该可以实现新旧密码共存从而进行无缝切换。

但是感觉这样效率会不会降低,在平时都没有修改密码的情况下,每次连接数据库都要进行一次判断...

P.S.不要局限于我想到的这个方案啊喂(感觉每次提问如果我留了一个方案的话很多人就会顺着我的思路去改进),我在这方面没有经验的啊喂!!

回复内容:

不知道大家能不能看懂 数据库密码热修改 这个短语的意思,就是热拔插的热(我不知道该怎么描述啊...囧),就是说在网站在运行的状态下修改数据库密码而不会出现密码错误之类的报错

我的博客(Typecho)访问量很低很低,修改数据库密码的话不用考虑报错,因为在那短短的十几秒内(在主机控制面板修改)有人访问的概率是相当相当低的。我猜测很多人/很多小网站都是这样的吧,访问量稍微大一点的话可以在夜深人静的时候进行。

那么问题来了:访问量大的网站(比如说 SF 什么的)应该如何进行数据库密码的热修改?

在写这个问题的时候我突然想到的一种解决方案是

在配置文件里把数据库密码写成一个数组,保存两个或者多个密码,每次连接时如果密码1报错那么就采用密码2进行连接。

在修改密码之前先把配置文件中无效的那个密码改成即将要修改的新密码,然后再去修改数据库密码,这样应该可以实现新旧密码共存从而进行无缝切换。

但是感觉这样效率会不会降低,在平时都没有修改密码的情况下,每次连接数据库都要进行一次判断...

P.S.不要局限于我想到的这个方案啊喂(感觉每次提问如果我留了一个方案的话很多人就会顺着我的思路去改进),我在这方面没有经验的啊喂!!

嗯,举个之前的小栗子。密码过期问题是通过异常进行处理,说白了就是重试。当密码配置被重新下发后,新的连接会使用新的配置,而旧的连接发生异常后会销毁,因为是一个连接池管理的连接,所以什么都不用做新建一个便是,多偷懒多简单 :> 。

实际上在 Mysql 协议中,连接建立后密码失效ERROR 1820(实际上对应着用户失效),可以采用 SET PASSWORD 进行变更。所以,题主的担心大可不必,等着抛异常,在异常里处理更换当前连接的密码重试就好。

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值