MySQL 8.4 Docker部署:启用mysql_native_password报未知变量错误求助
解决MySQL 8.4 Docker容器中
unknown variable 'mysql-native-password=ON'错误 问题原因
MySQL 8.4正式版本移除了--mysql-native-password这个命令行启动参数,该参数仅存在于早期预览/RC版本中,因此之前的配置在正式版镜像中会触发未知变量错误。要启用mysql_native_password插件,需要改用插件加载的配置方式。
解决方案
1. 使用配置文件加载并启用插件
创建一个自定义的MySQL配置文件(比如my.cnf),内容如下:
[mysqld] plugin-load-add=mysql_native_password.so mysql_native_password=ON
在Docker Compose或启动命令中挂载这个配置文件到容器的/etc/mysql/conf.d/目录(该目录下的配置会被MySQL自动加载):
# docker-compose.yml示例 services: mysql: image: mysql:8.4 volumes: - ./my.cnf:/etc/mysql/conf.d/my.cnf environment: MYSQL_ROOT_PASSWORD: your_root_password # 移除原有的command: --mysql-native-password=ON配置
2. 为用户设置mysql_native_password认证方式
插件启用后,需要手动为目标用户切换认证方式(默认是caching_sha2_password):
ALTER USER 'your_username'@'%' IDENTIFIED WITH mysql_native_password BY 'your_password'; FLUSH PRIVILEGES;
可以通过docker exec命令进入容器执行上述SQL,或者在初始化脚本中添加该逻辑。
3. 验证插件状态
进入容器执行以下命令,确认插件已成功加载:
mysql -uroot -p -e "SHOW PLUGINS LIKE 'mysql_native_password';"
输出中Status列显示ACTIVE即为成功。
内容的提问来源于stack exchange,提问作者memeister
相关产品推荐
相关产品推荐

