docker獲取mysql賬號密碼的方法
親測:
#獲取運(yùn)行中鏡像?通過 NAMES 獲取鏡像名稱 docker ps #mysql-container為容器名稱 docker inspect mysql-container | grep -i MYSQL_ROOT_PASSWORD
查看Docker環(huán)境變量設(shè)置的密碼
- 方法一:查看容器的運(yùn)行參數(shù)
在Linux系統(tǒng)下,可以使用docker inspect命令獲取容器的詳細(xì)信息,其中包括環(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)境變量,進(jìn)而獲取到設(shè)置的密碼 。不過這種方式只適用于你沒有清理過命令歷史記錄的情況。
查看docker-entrypoint-initdb.d里SQL文件中的密碼設(shè)置
- 進(jìn)入容器查看相關(guān)目錄
首先使用docker exec命令進(jìn)入MySQL容器,假設(shè)容器名稱是mysql-container,執(zhí)行:
docker exec -it mysql-container bash
進(jìn)入容器后,導(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進(jìn)行編輯查看:
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容器中,無法直接從配置文件里獲取明文密碼,因?yàn)閺腗ySQL 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的運(yùn)行參數(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
再重新啟動容器并掛載配置文件目錄,進(jìn)入容器后編輯MySQL配置文件,在 [mysqld] 配置段添加 skip-grant-tables 以跳過權(quán)限驗(yàn)證。
3. 登錄并修改密碼:
再次進(jìn)入容器,此時無需密碼即可登錄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實(shí)例中的所有用戶賬號,以及這些賬號允許登錄的主機(jī)。
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的配置文件目錄(具體掛載方式因鏡像而異)。進(jìn)入容器后,編輯MySQL的配置文件(常見路徑有 /etc/mysql/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf ) ,在 [mysqld] 配置段下添加 skip-grant-tables ,用于跳過權(quán)限驗(yàn)證。
登錄MySQL并修改密碼
再次進(jìn)入容器,此時無需密碼即可登錄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ù)實(shí)際情況替換 。
到此這篇關(guān)于docker如何獲取mysql的賬號密碼的文章就介紹到這了,更多相關(guān)docker mysql賬號密碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Next.js?Docker鏡像私有部署從零實(shí)現(xiàn)
這篇文章主要為大家介紹了Next.js?Docker鏡像私有部署從零實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12
Docker安裝Nginx教程實(shí)現(xiàn)圖例講解
這篇文章主要介紹了Docker安裝Nginx教程圖例講解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-09-09
利用寶塔面板和docker快速部署網(wǎng)站的基本流程
當(dāng)你有了一臺服務(wù)器,就會折騰往這臺服務(wù)器上部署各種好玩的網(wǎng)站,本文將以部署filebrowser舉例介紹網(wǎng)站部署的基本流程,感興趣的朋友一起看看吧2023-12-12
使用Dockerfile實(shí)現(xiàn)數(shù)據(jù)卷的掛載問題(推薦)
Dockerfile就是一個可以用來構(gòu)建鏡像的文件,可以理解為一個腳本文件,可以通過這個腳本文件自定義生成一個我們想要的鏡像,鏡像都是一層一層的,里面的每一條命令就是一層,本文給大家介紹使用Dockerfile實(shí)現(xiàn)數(shù)據(jù)卷的掛載,感興趣的朋友一起看看吧2022-03-03
關(guān)于immich?docker-compose.yml配置文件詳解
Immich是一個自托管的照片和視頻備份解決方案,允許用戶在私有服務(wù)器上存儲、管理和分享他們的媒體文件,項(xiàng)目提供了自托管、照片和視頻備份、易于訪問、數(shù)據(jù)控制、隱私保護(hù)等功能,通過Docker容器化部署,用戶可以方便地安裝和維護(hù)Immich應(yīng)用2025-03-03

