docker 修改mysql密碼
在 Docker 中,有多種方法可以有效地修改 MySQL 密碼。以下是幾種常用的方法,每種方法都有其特定的使用場(chǎng)景和優(yōu)缺點(diǎn)
方法 1: 使用 MySQL Shell
1.進(jìn)入 MySQL 容器: 首先,你需要進(jìn)入正在運(yùn)行的 MySQL 容器。可以使用以下命令通過(guò) docker exec 進(jìn)入容器的命令行界面:
docker exec -it <mysql-container-name> mysql -u root -p

在這里,<mysql-container-name> 是你的 MySQL 容器名稱(chēng)。運(yùn)行該命令后,系統(tǒng)會(huì)提示你輸入當(dāng)前的 root 密碼。如果密碼正確,你將進(jìn)入 MySQL 的命令行界面。
2.修改密碼: 一旦你進(jìn)入了 MySQL shell,可以使用以下 SQL 命令來(lái)修改 root 用戶(hù)的密碼(請(qǐng)將 newpassword 替換為你希望設(shè)置的新密碼):
ALTER USER 'root'@'%' IDENTIFIED BY 'newpassword';
FLUSH PRIVILEGES;

這里的 ALTER USER 命令用于更新指定用戶(hù)的密碼。'root'@'%' 表示所有主機(jī)上的 root 用戶(hù)。如果你想要修改其他用戶(hù)的密碼,可以替換成相應(yīng)的用戶(hù)名和主機(jī)。
方法 2: 使用環(huán)境變量重新啟動(dòng)容器
如果你想要在創(chuàng)建新的 MySQL 容器時(shí)設(shè)置初始密碼,可以使用環(huán)境變量:
docker run --name mymysql -e MYSQL_ROOT_PASSWORD=newpassword -d mysql:latest

在這個(gè)命令中,--name mymysql 用于指定容器名稱(chēng),-e MYSQL_ROOT_PASSWORD=newpassword 用于設(shè)置 root 用戶(hù)的密碼為 newpassword。使用 -d 參數(shù)可以讓容器在后臺(tái)運(yùn)行。需要注意的是,這個(gè)命令將會(huì)創(chuàng)建一個(gè)新的 MySQL 實(shí)例,而不是修改現(xiàn)有的實(shí)例。
方法 3: 使用 SQL 文件
如果你已經(jīng)有一個(gè) SQL 文件,可以在容器啟動(dòng)時(shí)自動(dòng)執(zhí)行其中的命令,從而設(shè)置或修改密碼。這種方法適合批量初始化多個(gè)數(shù)據(jù)庫(kù)實(shí)例或執(zhí)行復(fù)雜的初始化邏輯。
1.創(chuàng)建一個(gè) SQL 文件(例如 init.sql)并添加以下內(nèi)容:
ALTER USER 'root'@'%' IDENTIFIED BY 'newpassword';
FLUSH PRIVILEGES;

2.啟動(dòng) MySQL 容器并掛載該文件:
docker run --name mymysql -v /path/on/host/init.sql:/docker-entrypoint-initdb.d/init.sql -e MYSQL_ROOT_PASSWORD=oldpassword -d mysql:latest
這將在容器啟動(dòng)時(shí)執(zhí)行 init.sql 中的命令。

在這個(gè)命令中,-v /path/on/host/init.sql:/docker-entrypoint-initdb.d/init.sql 表示將本地的 init.sql 文件掛載到容器內(nèi)的指定路徑。這樣,在容器啟動(dòng)時(shí),MySQL 會(huì)自動(dòng)執(zhí)行 init.sql 文件中的命令,完成密碼的修改。