2016-09-16 42 views
0

我有一个从没有安装Docker的机器上获取的转储。格式是.sql.gz - 我的问题是如何在Docker MySQL实例上恢复这个?如何恢复Docker MySQL实例上的.sql.gz转储?

可以从命令行访问MySQL:

docker run -it --link first-mysql:mysql --rm mysql sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"' 

不能以此来恢复转储:

泊坞窗EXEC -i第一mysql的mysql的-uroot -ppassword < db_dump.sql

回答

2

基本语法是:

gunzip dump.sql.gz 
docker exec -i container_name mysql -uroot -proot < dump.sql 

或复制到dunp.sql一卷进入conatainer并在那里启动mysql

docker exec -ti container_name bash 
mysql < /volume_dir/dump.sql 

其余的在mysql语法中。

+0

的基本语法是行不通的。如果我这样做,我会得到'拒绝访问'。 – MontyPython

+0

如果错误来自mysql,则提供'-u uername -p password'参数。但这是基本的mysql语法。 –

+0

是的,但它不起作用。它说'访问被拒绝'。我知道这是基本的mysql语法:) – MontyPython

1
  1. 因为从根登录不是问题,请使用root登录到MySQL。
  2. 创建具有所有权限的另一个用户,这是一种等同于root的权限。
  3. 冲洗privieleges。

泊坞窗EXEC -i CONTAINER_NAME MySQL的-uloader -ploader < dump.sql