docker mysql 修改密碼


0、前情摘要

最近公司護網行動,又要排查所有的中間件密碼,其中 mysql的密碼修改遇到了問題,需要分享一下。

1、mysql docker鏡像設置密碼

啟動的時候,設置環境變量就可以配置 mysql的密碼:

  • MYSQL_ROOT_PASSWORD :root的密碼
  • MYSQL_USER :建一個普通用戶
  • MYSQL_PASSWORD :普通用戶的密碼

2、mysql docker鏡像修改密碼

當需要修改mysql密碼的時候,發現修改環境變量再重啟,密碼並沒有修改,因為已經持久化了,密碼存下來了,不會再讀取環境變量了。
只能通過mysql命令行來修改了。

# 用舊密碼登陸root
mysql -uroot -p

# 修改普通用戶的密碼
SET PASSWORD FOR 'youruser' = PASSWORD('xxxxxxxx');

# 修改root密碼
SET PASSWORD FOR 'root' = PASSWORD('xxxxxxxxxxxxx');

3、問題來了,mysql容器重啟起不來了!

其實不需要重啟,密碼已經生效了,但是只有重啟才會暴露出來這個問題!你也無法保證容器不重啟啊!
報錯信息:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
  • 意思就是密碼錯誤!!!但是怎么可能密碼錯誤呢???我都用 navicat 連上了呀!!!
  • 上邊這句話里就存在題眼了:::navicat 和 localhost 肯定不是一個 host !!!
  • 問題就是你只改了其他host連接的root 密碼,localhost的root密碼沒有改!!!
  • 但是為什么重啟mysql容器的時候,會用 'root'@'localhost' 和 新密碼 來個登陸???mysql還是不夠了解啊。

4、docker mysql 修改密碼的姿勢

# 修改普通用戶,只改一個就好
SET PASSWORD FOR 'youruser' = PASSWORD('xxxxxxxx');

# 修改root用戶,改兩個
SET PASSWORD FOR 'root' = PASSWORD('xxxxxxxxx');
SET PASSWORD FOR 'root'@'localhost'=PASSWORD('xxxxxxxxx');

5、如果docker 容器已經在無限重啟了

如果你只改了 % 的root,沒有改 localhost的root密碼,一旦容器重新啟動,就完了!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM