---
# System prepended metadata

title: Laradock與mysql8.4適配性問題
tags: [全端]

---


以前都用laradock開發，最近要開發新專案，才發現因為MYSQL8.4取消了本機密碼驗證
laradock\mysql\my.cnf的檔案出現這句
`default_authentication_plugin=mysql_native_password`

就是這行，導致sql容器開不起來。


---

目前我嘗試2種方法，兩種方法都是屬於不管它哈
屬於Laradock與mysql的糾葛，我們凡人是無法插手的，給開發人員在下一次的更新解決吧。
我們只要避開就好

1.另外使用dock開一個mysql，然後另外連

2.改SQL版本為8.3

最後我採用第2種
一.先把laradock-env裡的mysql版本改成8.3
`MYSQL_VERSION=8.3`
二.修正laradock-Dockerfile
下面這邊拿掉
```
RUN if [ ${MYSQL_VERSION} > '8.4.0–0.000' ]; then \
echo 'mysql_native_password=on' >> /etc/mysql/conf.d/my.cnf \
else \
echo 'default-authentication-plugin=mysql_native_password' >> /etc/mysql/conf.d/my.cnf \
;fi
```
下面這邊加上
```
RUN version_gt() { \
test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1"; \
}; \
mysql_version_trimmed=$(echo "$MYSQL_VERSION" | grep -oE '^[0–9]+\.[0–9]+');\
if version_gt "$mysql_version_trimmed" "8.3"; then \
echo 'mysql_native_password=on' >> /etc/mysql/conf.d/my.cnf ; \
else \
echo 'default-authentication-plugin=mysql_native_password' >> /etc/mysql/conf.d/my.cnf ; \
fi
```
三.cmd在laradock資料夾執行
```
docker compose down mysql
docker compose build --no-cache mysql
docker-compose up -d nginx mysql phpmyadmin
```
這樣應該可以開啟了。

有問題可來信告知:rtggjkdsgn@gmail.com(阿嶸)