avatar

JiangBao

This guy is lazy and leaves nothing behind

docker里如何执行sql

Published:
|

当我们在docker里运行数据库,想执行初始化sql脚本,这里以mysql为例: 去执行mysql命令会出现报错

mysql命令报错

宿主机直接执行mysql命令行是无效的,它会报错,这是因为mysql安装在docker容器内,宿主机无法直接命令执行。

 zsh: command not found: mysql 

docker exec命令

所以我们必须进入docker里去执行,命令如下:

 docker exec -it mysql bash
# docker exec 命令用于在正在运行的Docker 容器中执行命令。它允许用户与容器内部进行交互,而无需进入容器的shell。
# 命令中mysql是容器名 

此时我们进入mysql命令模式

如果直接执行宿主机的sql文件是不行的

容器内复制文件

新开一个终端 查看容器的文件目录

 docker exec mysql ls 

首先我们把文件复制到docker里来

执行 docker cp <宿主机文件的绝对路径> 空格 <docker数据库container id>:<docker容器路径>

 docker cp /Users/xxx/xxx.sql 60dba8cdfc5e:/tmp    

容器id可以通过docker ps获取

执行sql脚本

回到我们之前进入mysql命令模式 选择数据库

 use test; 

执行sql文件

 source /tmp/xxx.sql 

即可