gpt4 book ai didi

带有 docker 的 mysql_config_editor

转载 作者:行者123 更新时间:2023-11-30 22:12:50 27 4
gpt4 key购买 nike

您好,我正在尝试直接在我的 Dockerfile 中使用 mysql_config_editor 工具:

FROM mysql
RUN mysql_config_editor set --login-path=local --user=root --password

但是这个命令要求用户输入密码。知道无法直接在命令行中设置密码,有没有一种方法可以直接从 Dockerfile 中设置密码。

root@d80484a3177f:~# mysql_config_editor set --login-path=local --user=root --password                   
Enter password:

root@d80484a3177f:~# mysql_config_editor set --login-path=local --user=root --password=root
mysql_config_editor: [ERROR] mysql_config_editor: option '--password' cannot take an argument

谢谢

最佳答案

你可以使用 expect 来做到这一点:

这是您的 Dockerfile :

FROM mysql:5.7

RUN apt-get update && apt-get --no-install-recommends --no-install-suggests -y install expect

ENV MYSQL_ROOT_PASSWORD "secure_root_password"

ADD mysql_config.sh /root/mysql_config.sh
RUN cd /root && ./mysql_config.sh $MYSQL_ROOT_PASSWORD

这是 mysql_config.sh :

#!/usr/bin/expect

set pwd [lindex $argv 0];

spawn mysql_config_editor set --login-path=local --host=localhost --user=root --password
expect -nocase "Enter password:" {send "${pwd}\r"; interact}

现在你可以直接连接到 MySQL 了:

$ docker exec -it your-mysql-container mysql --login-path=local
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.18 MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

也许这不是最干净的方法,但它确实有效!

关于带有 docker 的 mysql_config_editor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39495030/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com