MySQL Docker 無法使用 --default-authentication-plugin 的問題
一直以來開發時期若有需要使用 MySQL 都是使用 Docker 來建立,畢竟方便又不會汙染到本機,之前一直都是使用以下的 docker-compose.yaml
來啟動:
version: "3.1"
services:
db:
image: mysql:8
command: --default-authentication-plugin=mysql_native_password
restart: always
ports:
- "3306:3306"
environment:
MYSQL_DATABASE: {{MYSQL_DATABASE}}
MYSQL_ROOT_PASSWORD: {{MYSQL_ROOT_PASSWORD}}
不過最近新建立時, pull 了最新版本的 MySQL image 後啟動確失敗了,看了一下 log,看起來是 --default-authentication-plugin
參數的問題,查了下才發現 MySQL 在 8.4
版的時候刪掉了這個參數,這個參數主要是讓連線可以使用帳號跟密碼直接連線, 8.0.27
版的時候已經器用,直到最近的 8.4
確定刪除,所以之後都無法再使用此參數。
現在在啟用的時候開啟要可以使用帳號密碼連線必須改用 --mysql-native-password=ON
,因此整個 docker-compose.yaml
version: "3.1"
services:
db:
image: mysql:8
command: --mysql-native-password=ON
restart: always
ports:
- "3306:3306"
environment:
MYSQL_DATABASE: {{MYSQL_DATABASE}}
MYSQL_ROOT_PASSWORD: {{MYSQL_ROOT_PASSWORD}}
Ref: