从MySQL docker镜像导出数据

时间:2016-01-13 17:48:20

标签: mysql docker mysqldump suppress-warnings

我使用官方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客户端压制此警告?

5 个答案:

答案 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
  • 要获取CONTAINER_ID,请列出它们: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

替换

  1. CONTAINER_id。用户名,您的密码

具体取决于您的配置。

要获取容器ID:

docker container ls