在尝试使用 docker-compose 启动 MySQL 8.4 容器时,许多用户可能会遇到一个错误:“unknown variable ‘default-authentication-plugin=mysql_native_password’”。这个错误发生的原因是 MySQL 8.4 版本已经移除了 default-authentication-plugin
这个参数。
要解决这个问题,我们需要对 docker-compose.yml
文件进行一些调整。以下是具体的步骤和说明:
步骤一:修改 docker-compose.yml 文件
打开你的 docker-compose.yml
文件,找到其中关于 MySQL 服务的部分,你会看到一个 command
字段,包含类似于 --default-authentication-plugin=mysql_native_password
的值。
现在,需要将这个值替换为 --mysql-native-password=ON
。修改后的 command
字段应该如下所示:
db:
image: mysql:8.4
command: ["mysqld", "--mysql-native-password=ON"]
# ... 其他配置项保持不变
步骤二:注释掉 my.cnf 文件中的 default-authentication-plugin
除了修改 docker-compose.yml
文件之外,我们还需要对 MySQL 的配置文件 my.cnf
进行一些调整。如果你有一个自定义的 my.cnf
文件,并且在这个文件中设置了 default-authentication-plugin=mysql_native_password
,那么你需要将其注释掉。
在 my.cnf
文件中,找到 [mysqld]
部分,添加一个注释符号 (#
) 在 default-authentication-plugin=mysql_native_password
这一行前面,如下所示:
[mysqld]
mysql_native_password=ON
#default-authentication-plugin=mysql_native_password
如果你没有自定义的 my.cnf
文件,或者 MySQL 容器没有使用你的自定义配置文件,这一步可以跳过。
错误总结
在 MySQL 8.4 中,mysql_native_password
是一个新的参数,用于替代已经被移除的 default-authentication-plugin
参数。通过设置 --mysql-native-password=ON
,我们可以启用 mysql_native_password
身份验证插件,解决上述的错误。
另外,由于 default-authentication-plugin
参数已经被移除,所以需要将它从配置文件中注释掉,以避免潜在的冲突。