如何在Docker容器中对MySQL或PostgreSQL导入导出.sql文件
Docker容器中MySQL的SQL文件导入与导出
导出SQL文件
- 先确认MySQL容器的名称或ID,执行:
docker ps - 使用
mysqldump命令导出指定数据库到本地文件:docker exec <容器名/ID> mysqldump -u<数据库用户名> -p <数据库名> > ./local_dump.sql- 执行后会提示输入数据库密码,不要在命令行直接写密码,避免泄露
./local_dump.sql是本地保存导出文件的路径,可根据需求修改
导入SQL文件
从本地文件导入到容器内数据库
- 确保目标数据库已在容器内创建(若未创建,可进入容器执行
CREATE DATABASE <数据库名>;) - 执行导入命令:
docker exec -i <容器名/ID> mysql -u<数据库用户名> -p <数据库名> < ./local_dump.sql-i参数确保本地文件内容能正确传入容器内的mysql进程- 执行后输入数据库密码即可完成导入
Docker容器中PostgreSQL的SQL文件导入与导出
导出SQL文件
- 确认PostgreSQL容器的名称或ID:
docker ps - 使用
pg_dump命令导出数据库:docker exec <容器名/ID> pg_dump -U<数据库用户名> <数据库名> > ./local_dump.sql- 若需要密码验证,可添加
--password参数,执行后交互式输入密码 - 默认PostgreSQL用户名是
postgres,可根据实际配置修改
- 若需要密码验证,可添加
导入SQL文件
从本地文件导入到容器内数据库
- 确保目标数据库已存在(可通过
docker exec -it <容器名/ID> psql -U<用户名>进入容器后执行CREATE DATABASE <数据库名>;创建) - 执行导入命令:
docker exec -i <容器名/ID> psql -U<数据库用户名> -d<数据库名> < ./local_dump.sql-d指定目标数据库,-i保证本地文件流能被正确读取- 若需要密码,执行时会提示输入
注意事项
- 操作前确保Docker容器处于运行状态,可通过
docker start <容器名/ID>启动停止的容器 - 本地文件路径要正确,若出现权限问题,可检查本地文件的读写权限,或临时调整权限后再操作
- 避免在命令行明文输入密码,优先使用交互式输入方式,保障数据安全
内容的提问来源于stack exchange,提问作者Programmer
相关产品推荐
相关产品推荐

