如何从A电脑的mysql docker容器中备份数据库并迁移到B电脑到docker
使用mysqldump备份数据库
进入 MySQL 容器:
首先,你需要进入正在运行的 MySQL 容器的命令行界面。可以使用以下命令:
docker exec -it <container_name_or_id> bash
将
<container_name_or_id>
替换为你的 MySQL 容器的名称或 ID。使用
mysqldump
命令:在容器内部的命令行界面中,你可以使用
mysqldump
命令备份数据库,方式与之前相同。命令语法如下:mysqldump -u <username> -p <database_name> > <backup_file.sql> //注意这里有个">"箭头
替换
<username>
、<database_name>
和<backup_file.sql>
为适当的值。例如,备份名为
mydatabase
的数据库到文件backup.sql
:mysqldump -u root -p mydatabase > backup.sql
如果只需要表结构,不需要表数据,则加参数--no-data,
例如:mysqldump -u root -p --no-data mydatabase > backup_structure.sql
- 执行命令并输入密码:
在容器内部执行
mysqldump
命令,它会提示你输入数据库用户的密码。输入密码后,命令会开始生成备份文件。 - 等待备份完成:
等待
mysqldump
命令执行完成。在容器内等待命令执行,不要中断它。 - 确认备份文件:
备份完成后,你将在容器内部的当前目录中找到一个名为
<backup_file.sql>
的备份文件。 将备份文件复制到主机:
退出容器的命令行界面,然后使用
docker cp
命令将备份文件从容器复制到主机上,以便你可以在主机上找到备份文件。docker cp <container_name_or_id>:<backup_file.sql> /path/on/host
替换
<container_name_or_id>
、<backup_file.sql>
和/path/on/host
为适当的值。
现在,你已经在 Docker 容器中使用 mysqldump
命令备份了 MySQL 数据库,并将备份文件复制到了主机上。备份文件 backup.sql
包含数据库的结构和数据,可以用于恢复数据库。
迁移dump文件
scp -r [email protected]:/Users/user/source/devops/mysql ./ //这里需要输入A电脑到密码
在B电脑docker恢复数据库dump文件(恢复之前需要先创建对应的数据库,否则无法恢复)
要在另一台机器的容器中恢复 MySQL 数据库,你可以使用 mysql
命令和之前生成的备份文件。以下是一般步骤:
将备份文件复制到另一台机器:
将之前生成的备份文件(如
auth.sql
)从原始机器复制到新机器。你可以使用docker cp
命令将备份文件从主机复制到容器内。docker cp /path/to/auth.sql <container_name_or_id>:/
将
/path/to/auth.sql
替换为实际的文件路径,将<container_name_or_id>
替换为目标容器的名称或 ID。进入 MySQL 容器:
在新机器上,进入运行中的 MySQL 容器的命令行界面,可以使用以下命令:
docker exec -it <container_name_or_id> bash
使用
mysql
命令恢复数据库:在容器内部的命令行界面中,你可以使用
mysql
命令来执行备份文件以恢复数据库。命令语法如下:mysql -u <username> -p <database_name> < <backup_file.sql>
替换
<username>
、<database_name>
和<backup_file.sql>
为适当的值。例如,恢复名为
auth
的数据库使用名为auth.sql
的备份文件:mysql -u root -p auth < /auth.sql
- 执行命令并输入密码:
在容器内部执行
mysql
命令,它会提示你输入数据库用户的密码。输入密码后,命令将执行备份文件中的 SQL 命令来恢复数据库。 - 等待恢复完成:
等待
mysql
命令执行完成。在容器内等待命令执行,不要中断它。 - 确认恢复成功:
恢复完成后,你可以通过登录到 MySQL 容器并执行查询来确认数据库已经成功恢复。
请注意,恢复数据库会执行备份文件中的所有 SQL 命令,包括创建表、插入数据等。确保在恢复之前备份数据,特别是在生产环境中。
创建mysql用户并授权访问数据库
- create user 'username'@'%' identified by 'username'
- GRANT ALL PRIVILEGES ON databasename.* TO 'username'@'%';
- 执行 FLUSH PRIVILEGES; 命令来刷新权限,以便新的权限设置立即生效。