在使用mysql時,有些用戶輸入密碼后就會閃退,這個問題究竟是什么原因造成的呢?
首先,我們需要先了解一下mysql的認(rèn)證方式。mysql的1.x版本使用的是舊的認(rèn)證方式,用戶的密碼是以明文形式存儲在mysql.user表中的;而mysql的2.x版本及以上使用的是新的加密認(rèn)證方式,用戶的密碼是經(jīng)過SHA256加密后存儲在mysql.user表中的。
如果你的mysql是使用的舊的認(rèn)證方式,輸入密碼后閃退的原因可能是密碼錯誤導(dǎo)致的。如果密碼錯誤達(dá)到一定次數(shù),mysql會認(rèn)為你的賬戶存在安全風(fēng)險,然后就會斷開連接。
如果你的mysql是使用的新的加密認(rèn)證方式,輸入密碼后閃退的原因可能是PHP版本和mysql的版本不兼容。在PHP7.4和mysql8.0及以上的版本中,mysql的默認(rèn)加密方式由caching_sha2_password改為了sha256_password。在PHP5.x和mysql5.x的版本中,并不支持sha256_password的加密方式,所以就會出現(xiàn)密碼驗(yàn)證失敗的情況。
如果你的mysql是使用的新的加密認(rèn)證方式,并且你使用的是PHP7.4及以上的版本,那么就需要在連接mysql之前修改PHP的配置文件php.ini。將mysqli.default_authentication_plugin的值修改為mysql_native_password,這樣才能使用舊的加密認(rèn)證方式與mysql通信。
總之,如果在使用mysql時出現(xiàn)了密碼輸入后閃退的情況,需要先檢查是否輸入的是正確的密碼,然后檢查mysql和PHP的版本是否兼容,最后才能確定問題所在。