Authentication plugin ‘caching_sha2_password’ cannot be loaded: /usr/lib64/mysql/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory。
执行命令报错,错误信息为Authentication plugin ‘caching_sha2_password’ cannot be loaded: /usr/lib64/mysql/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory。这是因为 MySQL 8.0 默认使用 caching_sha2_password 插件进行身份验证,而旧的 MySQL 客户端不支持这种插件。
解决该问题可以在 docker-compose.yml 中添加下面的环境变量来指定使用 mysql_native_password 插件进行身份验证:
MYSQL_ROOT_HOST: '%' MYSQL_USER: root MYSQL_PASSWORD: rootpassword MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' # Add the following lines to use legacy authentication mode command: --default-authentication-plugin=mysql_native_password
同时在 MySQL 客户端连接时也需要指定使用 mysql_native_password 插件进行身份验证:
mysql -u root -p --host=127.0.0.1 --port=3306 --protocol=tcp --default-auth=mysql_native_password
这样应该可以成功连接到 MySQL 服务器了。
或者第二种解决方式是执行以下命令:
docker exec -it mysql-master-1 bash mysql -u root -p # 输入密码后执行以下命令 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'masterroot'; ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'masterroot'; FLUSH PRIVILEGES; EXIT;