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 參數的問題,查了下才發現 MySQL8.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:

Read more

Debug Story

Debug Story

Ref: * 寫程式不是輸出,是內化 * Vibe Story:用敘事智能為程式碼注入生命,簡化維護 這篇主要是想紀錄一下看了Ruddy 老師的文章後想做的事情,雖然通篇的重點不是在我想做的這件事,但因為Ruddy 老師的這篇文章讓我覺得以後在排除 Bug 的時候應該要做這件事才對。 以下的內容是擷取 Ruddy 老師的內容(部分修改) 1. 記錄搜尋路徑與嘗試過的假設 => 我以為是 state 沒清,但發現是 effect 未執行 2. 為錯誤進行分類,然後標註成概念 => 這是 mutable state 的副作用問題 3. 寫一段描述該段程式的情境與原則 => Vibe Story 該段程式的情境與原則可以參考一下的要點撰寫: * 場景(Context):描述程式碼的背景與需求。 * 目標(Goal):說明功能目的。 * 挑戰與迭代(Challenges &

By Mars
Claude Code Status line on Windows

Claude Code Status line on Windows

Claude Code 在大家軍備戰發布了 Status line 這個功能,讓使用者可以在 Claude Code 的輸入框下方自訂自己想要的訊息,官方提供幾個方式可以實現這功能(Bash, Node.js, Python),最後我選擇使用 Node.js。 趁著週末寫玩了一下,剛開始照著官方文件做,結果啥都沒顯示出來,接著叫 Claude Code 幫我做,他說成功了,結果還是啥都沒有...最後才發現可能是官方提供設定檔案的問題 { "statusLine": { "type": "command", "command": "~/.claude/statusline.sh", "padding": 0 // Optional:

By Mars