簡介
問題
在容器初始化期間,如果卷映射到資料庫資料目錄(在本例中為db_data)已經包含資料庫檔案系統,容器將尊重現有資料庫並忽略與初始化相關的任何環境變量,包括MYSQL_ROOT_PASSWORD。因此,嘗試使用配置的憑證存取資料庫將會失敗。解決方案
要解決此問題,請確保在沒有預先配置的情況下啟動容器現有資料庫磁碟區。這可以透過使用以下命令刪除資料卷來實現:docker-compose down -v隨後,使用 docker-compose up -d 命令再次啟動容器。此程序將刪除現有資料庫內容,並使用 MYSQL_ROOT_PASSWORD 中儲存的指定 root 密碼初始化新資料庫。
注意: 小心,因為上述指令將永久刪除 MYSQL_ROOT_PASSWORD 中任何預先存在的資料db_data 磁碟區。如果您希望保留此數據,請在執行這些命令之前進行備份。
綁定掛載的替代方法
如果使用綁定掛載,請透過導航手動刪除其內容到綁定定掛載路徑並執行以下指令:rm -rf /path/to/bind/mount/*
其他相關資訊
此方法適用於MySQL docker映像。然而,值得注意的是,其他官方資料庫 Docker 映像,包括 PostgreSQL 和 MongoDB 的映像,都遵循類似的初始化過程,並且在使用預先存在的資料卷時可能會遇到類似的問題。以上是儘管設定了 MYSQL_ROOT_PASSWORD,為什麼我的 Docker MySQL 容器仍拒絕存取?的詳細內容。更多資訊請關注PHP中文網其他相關文章!