当我尝试docker-compose -f docker-compose-now.yml up
时,我收到此消息
error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
现在,我确实阅读了这个解决方案:
use mysql;
update user set authentication_string=password(''), plugin='mysql_native_password' where user='root';
来自:https://github.com/mysqljs/mysql/issues/1507
但是如何将其放在docker-compose-now.yml
中的entrypoints
文件中?
我的环境在此文件中,当我尝试时:
entrypoints: sh "update user set authentication_string=password(''), plugin='mysql_native_password' where user='root'"
我只收到另一个错误。
我该如何解决这个问题?
答案 0 :(得分:1)
为了正确看待问题,您在入口点脚本中执行的操作实际上是在sh
shell中执行的。您要运行的命令应在mysql
shell中执行。
您的入口点应该使用以下命令来运行mysql
命令:
mysql -u root -p [root-password] -e "update user set authentication_string=password(''), plugin='mysql_native_password' where user='root';"
如果您想在mysql
db上执行此操作,则可以执行
mysql -u root -p [root-password] mysql -e "update user set authentication_string=password(''), plugin='mysql_native_password' where user='root';"
在此命令中,首先使用mysql -u -p
命令输入mysql shell,然后使用-e
标志执行sql命令(它代表执行)。无论在-e
之后执行什么在mysql shell中执行(如查询等)。有关详细信息和示例,请参阅:
https://dev.mysql.com/doc/refman/8.0/en/command-line-options.html
答案 1 :(得分:0)
version: '3'
services:
db:
image: mysql
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWOR=example
我在mysql镜像中的Docker Hub上找到了解决方案。更改auth模式的docker-compose.yml的设置“命令”。