我使用官方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客户端压制此警告?
答案 0 :(得分:5)
回答有点迟,但这个命令救了我的一天。
docker exec CONTAINER /usr/bin/mysqldump -u root --password=root DATABASE > backup.sql
答案 1 :(得分:4)
我意识到这是一个古老的问题,但对于那些磕磕绊绊的人,我现在整理了一篇关于从mysql docker容器导出和导入的帖子:https://medium.com/@tomsowerby/mysql-backup-and-restore-in-docker-fcc07137c757 它涵盖了“在命令行界面上使用密码...”警告以及如何绕过它。
答案 2 :(得分:2)
要消除此确切警告,您可以在MYSQL_PWD
环境变量中传递密码或使用其他连接方法 - 请参阅http://dev.mysql.com/doc/refman/5.7/en/password-security-user.html
docker run -it --link containername:mysql --rm mysql sh -c
'export MYSQL_PWD="$MYSQL_ENV_MYSQL_ROOT_PASSWORD"; exec mysqldump
-h"$MYSQL_PORT_3306_TCP_ADDR"
-P"$MYSQL_PORT_3306_TCP_PORT" -uroot
dbname'
| gz > output.sql.gz
答案 3 :(得分:2)
这是我解决此问题的方法,将mysql db转储到文件中。
我创建了一个dump-db.sh
文件,内容如下:
# dump db from docker container
(docker exec -i CONTAINER_ID mysqldump -u DB_USER -pDB_PASS DB_NAME) > FILENAME.sql
docker container list
向脚本添加运行权限:
chmod o+x dump-db.sh
运行它:
./dump-db.sh
请记住用您自己的数据替换上面的常量。
答案 4 :(得分:1)
在终端上运行以下命令
docker exec CONTAINER_id /usr/bin/mysqldump -uusername --password=yourpassword databasename> backup.sql
替换
具体取决于您的配置。
要获取容器ID:
docker container ls