docker獲取mysql賬號密碼的方法
親測:
#獲取運行中鏡像?通過 NAMES 獲取鏡像名稱 docker ps #mysql-container為容器名稱 docker inspect mysql-container | grep -i MYSQL_ROOT_PASSWORD
查看Docker環(huán)境變量設(shè)置的密碼
- 方法一:查看容器的運行參數(shù)
在Linux系統(tǒng)下,可以使用docker inspect命令獲取容器的詳細信息,其中包括環(huán)境變量的設(shè)置。假設(shè)你的MySQL容器名稱是mysql-container,執(zhí)行以下命令:
docker inspect mysql-container
命令執(zhí)行后會輸出大量JSON格式的信息,你可以通過搜索關(guān)鍵詞(如MYSQL_ROOT_PASSWORD )來查找密碼相關(guān)的設(shè)置。也可以結(jié)合grep命令簡化輸出,比如:
docker inspect mysql-container | grep -i MYSQL_ROOT_PASSWORD
-i參數(shù)表示不區(qū)分大小寫搜索,這樣能快速定位到包含MYSQL_ROOT_PASSWORD的行,查看設(shè)置的密碼。
- 方法二:查看容器啟動歷史記錄
如果你是在本地終端啟動的Docker容器,那么可以使用history命令查看歷史執(zhí)行過的命令。例如:
history | grep docker run
找到啟動MySQL容器的那行命令,查看是否通過-e參數(shù)設(shè)置了MYSQL_ROOT_PASSWORD等環(huán)境變量,進而獲取到設(shè)置的密碼 。不過這種方式只適用于你沒有清理過命令歷史記錄的情況。
查看docker-entrypoint-initdb.d里SQL文件中的密碼設(shè)置
- 進入容器查看相關(guān)目錄
首先使用docker exec命令進入MySQL容器,假設(shè)容器名稱是mysql-container,執(zhí)行:
docker exec -it mysql-container bash
進入容器后,導(dǎo)航到docker-entrypoint-initdb.d目錄,使用ls命令列出該目錄下的文件:
ls /docker-entrypoint-initdb.d
然后使用文本編輯器(如vim或cat命令 )查看具體的SQL文件內(nèi)容。比如,文件名為init-user-db.sql ,可以用以下方式查看:
cat /docker-entrypoint-initdb.d/init-user-db.sql
或者使用vim進行編輯查看:
vim /docker-entrypoint-initdb.d/init-user-db.sql
在SQL文件中查找創(chuàng)建用戶和設(shè)置密碼的相關(guān)語句,常見的設(shè)置密碼語句如:
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
或者
ALTER USER 'username'@'host' IDENTIFIED BY 'password';
找到這些語句就能獲取到設(shè)置的密碼信息。
在MySQL容器中,無法直接從配置文件里獲取明文密碼,因為從MySQL 5.7版本開始,密碼以加密形式存儲在系統(tǒng)庫中 。不過,可以通過以下方式間接查看相關(guān)信息或重置密碼:
查看MySQL用戶表(加密密碼存儲處)
- 登錄MySQL:在容器內(nèi)的命令行,執(zhí)行登錄命令:
mysql -uroot -p
如果設(shè)置了root密碼,按提示輸入密碼回車登錄 。要是不知道root密碼,可嘗試后續(xù)重置密碼的方法。
2. 查看用戶表:登錄成功后,執(zhí)行以下SQL語句:
USE mysql; SELECT user, host, authentication_string FROM user;
authentication_string 字段存儲的是加密后的密碼,但無法直接還原為明文。
查找可能的配置文件(不一定有密碼信息)
雖然通常無法從中獲取明文密碼,但還是可以檢查下常見的配置文件,看看是否有相關(guān)線索:
- MySQL配置文件:路徑可能是
/etc/mysql/my.cnf或/etc/mysql/mysql.conf.d/mysqld.cnf,使用文本編輯器(如vim)打開查看:
vim /etc/mysql/my.cnf
這些文件主要用于配置MySQL的運行參數(shù),比如端口、字符集、緩存等,不一定包含密碼信息。
- 容器初始化腳本:像
docker-entrypoint-initdb.d目錄下的腳本文件,可能會有創(chuàng)建用戶、設(shè)置密碼等相關(guān)操作,你可以使用ls命令查看該目錄下的文件:
ls /docker-entrypoint-initdb.d
然后用文本編輯器打開查看內(nèi)容(如 vim 文件名 ),不過也可能經(jīng)過加密處理或使用環(huán)境變量設(shè)置密碼 。
重置密碼
如果忘記密碼,可按以下步驟重置:
- 停止MySQL服務(wù):
根據(jù)MySQL服務(wù)管理方式,執(zhí)行相應(yīng)停止命令:
- 若使用
service管理:
service mysql stop
- 若使用
systemctl管理:
systemctl stop mysql
- 以特殊模式啟動MySQL:
在容器外,先停止MySQL容器:
docker stop mysql-container
再重新啟動容器并掛載配置文件目錄,進入容器后編輯MySQL配置文件,在 [mysqld] 配置段添加 skip-grant-tables 以跳過權(quán)限驗證。
3. 登錄并修改密碼:
再次進入容器,此時無需密碼即可登錄MySQL:
mysql
登錄后執(zhí)行SQL語句重置密碼(假設(shè)新密碼為 new_root_password ):
USE mysql;
UPDATE user SET authentication_string = PASSWORD('new_root_password') WHERE user = 'root' AND host = 'localhost';
FLUSH PRIVILEGES;- 恢復(fù)正常模式:
刪除配置文件中添加的skip-grant-tables,重啟MySQL容器:
docker restart mysql-container
之后就能用新密碼登錄 。
1. 登錄MySQL
在當(dāng)前容器內(nèi)的命令行中, 執(zhí)行以下命令登錄MySQL :
mysql -uroot -p
如果MySQL的root用戶設(shè)置了密碼,系統(tǒng)會提示輸入密碼,輸入正確密碼后回車即可登錄。
要是不知道root密碼,先跳過此步驟,嘗試后續(xù)重置密碼的方法。
2. 查詢賬號信息(已登錄MySQL的情況下)
成功登錄MySQL后,執(zhí)行以下SQL語句:
USE mysql; SELECT user, host FROM user;
上述SQL語句會列出當(dāng)前MySQL實例中的所有用戶賬號,以及這些賬號允許登錄的主機。
3. 重置密碼(忘記root密碼時)
停止MySQL服務(wù)
在容器內(nèi),根據(jù)MySQL服務(wù)的管理方式,執(zhí)行相應(yīng)的停止命令:
- 若使用
service管理:
service mysql stop
- 若使用
systemctl管理:
systemctl stop mysql
以特殊模式啟動MySQL
在容器外,先停止當(dāng)前MySQL容器:
docker stop xfyun-mysql-container
接著重新啟動容器,并掛載MySQL的配置文件目錄(具體掛載方式因鏡像而異)。進入容器后,編輯MySQL的配置文件(常見路徑有 /etc/mysql/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf ) ,在 [mysqld] 配置段下添加 skip-grant-tables ,用于跳過權(quán)限驗證。
登錄MySQL并修改密碼
再次進入容器,此時無需密碼即可登錄MySQL:
mysql
登錄后,執(zhí)行以下SQL語句重置root密碼(假設(shè)新密碼為 new_root_password ):
USE mysql;
UPDATE user SET authentication_string = PASSWORD('new_root_password') WHERE user = 'root' AND host = 'localhost';
FLUSH PRIVILEGES;恢復(fù)正常模式
修改完密碼后,刪除配置文件中添加的 skip-grant-tables ,然后重啟MySQL容器:
docker restart xfyun-mysql-container
之后就可以使用新設(shè)置的密碼登錄MySQL 。
4. 查看或修改其他用戶密碼(已登錄MySQL且有足夠權(quán)限)
如果想查看其他用戶的信息,可通過之前的 SELECT user, host FROM user; 語句 。
若要修改其他用戶的密碼,比如將 testuser 用戶的密碼修改為 newpassword ,執(zhí)行以下SQL語句:
ALTER USER 'testuser'@'localhost' IDENTIFIED BY 'newpassword'; FLUSH PRIVILEGES;
將 testuser 和 localhost 根據(jù)實際情況替換 。
到此這篇關(guān)于docker如何獲取mysql的賬號密碼的文章就介紹到這了,更多相關(guān)docker mysql賬號密碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
maven構(gòu)建docker鏡像push到鏡像倉庫方式
這篇文章主要介紹了maven構(gòu)建docker鏡像push到鏡像倉庫方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11
keepalived+nginx+httpd實現(xiàn)的雙機熱備+負載均衡
本文主要介紹了keepalived + nginx + httpd 實現(xiàn)的雙機熱備+負載均衡,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-07-07
Docker-利用dockerfile來搭建tomcat服務(wù)的方法
這篇文章主要介紹了Docker-利用dockerfile來搭建tomcat服務(wù)的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-01-01
centos修改docker網(wǎng)絡(luò)配置方法分享
本文給大家分享的是centos修改docker網(wǎng)絡(luò)配置的方法,非常的實用,有需要的小伙伴可以參考下2017-03-03

