我使用的是正式的MySQL Docker映像,但在从示例导出数据时遇到了一些问题。
docker run -it --link containername:mysql --rm mysql sh -c
'exec mysqldump
-h"$MYSQL_PORT_3306_TCP_ADDR"
-P"$MYSQL_PORT_3306_TCP_PORT" -uroot
-p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"
dbname'
| gz > output.sql.gz
但是,这会导致警告:
"mysqldump: [Warning] Using a password on the command line interface can be insecure."
作为输出文件的第一行。显然,这会给其他使用数据的MySQL进程带来问题。
有什么方法可以抑制来自mysqldump客户机的此警告吗?
6条答案
按热度按时间um6iljoc1#
回答得有点晚,但这个命令救了我一命。
5cnsuln72#
我知道这是一个老问题,但对于那些偶然发现它,现在我把一个关于从mysql docker容器导出和导入的帖子放在一起:https://medium.com/@tomsowerby/mysql-backup-and-restore-in-docker-fcc07137c757它涵盖了“在命令行界面上使用密码...”警告以及如何绕过它。
euoag5mw3#
在终端上运行以下命令
更换
与特定于您的配置。
获取容器ID:
szqfcxe24#
要消除此警告,您可以在
MYSQL_PWD
环境变量中传递password或使用其他连接方法-请参见http://dev.mysql.com/doc/refman/5.7/en/password-security-user.htmlsnz8szmq5#
下面是我如何解决这个问题,将mysql数据库转储到一个文件中。
我创建了一个
dump-db.sh
文件,其内容如下:docker container list
向脚本添加运行权限:
chmod o+x dump-db.sh
运行它:
./dump-db.sh
记得用你自己的数据替换上面的常量。
im9ewurl6#
我总是在我的repo根目录下创建bash“工具”,用它可以重复常见的任务,比如数据库转储,使用bash,您还可以加载
.env
文件,这样您的凭据就不在repo的文件中,而只是在.env文件中。