从主机连接到 docker 容器中的 mysql
Connect to mysql in a docker container from the host
(由于我对 Docker 或 mysql 管理的了解有限,这可能是一个愚蠢的问题,但由于我在这个问题上花了整整一个晚上,所以我敢问它。)
一言以蔽之
我想 运行 mysql 在 docker 容器中并从我的主机连接到它。到目前为止,我取得的最好成绩是:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
更多详情
我正在使用以下 Dockerfile
:
FROM ubuntu:14.04.3
RUN apt-get update && apt-get install -y mysql-server
# Ensure we won't bind to localhost only
RUN grep -v bind-address /etc/mysql/my.cnf > temp.txt \
&& mv temp.txt /etc/mysql/my.cnf
# It doesn't seem needed since I'll use -p, but it can't hurt
EXPOSE 3306
CMD /etc/init.d/mysql start && tail -F /var/log/mysql.log
在这个文件所在的目录中,我可以成功构建图像并运行它:
> docker build -t my-image .
> docker run -d -p 12345:3306 my-image
当我附加到图像时,它似乎工作得很好:
# from the host
> docker exec -it <my_image_name> bash
#inside of the container now
$ mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
[...]
然而我并没有从主机那里得到那么多的成功:
> mysql -P 12345 -uroot
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
更详细
- 我看到有一个问题looks like mine。但是,它不一样(而且它没有任何答案)
- 我看到有图片 dedicated to mysql,但我没有用它们取得更多成功
- 我的
grep -v
可能会觉得奇怪。不可否认,可能有更清洁的方法来做到这一点。但是当我附上我的图像时,我可以观察到它确实按预期工作(即:删除了 bind-address
)。我可以在容器中看到 /var/log/mysql/error.log
:
Server hostname (bind-address): '0.0.0.0'; port: 3306
- '0.0.0.0' resolves to '0.0.0.0';
Server socket created on IP: '0.0.0.0'.
简单的方法是将 mysql unix 套接字共享给主机。然后通过套接字连接
步骤:
- 为主机创建共享文件夹例如:
mkdir /host
- 运行 docker 带有卷装载选项的容器
docker run -it -v /host:/shared <mysql image>
。
- 然后更改mysql配置文件
/etc/my.cnf
并将文件中的套接字条目更改为socket=/shared/mysql.sock
- 在 docker
中重新启动 MySQL 服务 service mysql restart
- 最终通过套接字
mysql -u root --socket=/host/mysql.sock
从主机连接到 MySQL 服务器。如果密码使用 -p 选项
如果你的 Docker MySQL 主机是 运行 正确你可以从本地机器连接到它,但是你应该像这样指定主机,端口和协议:
mysql -h localhost -P 3306 --protocol=tcp -u root
将 3306 更改为您从 Docker 容器转发的端口号(在您的情况下为 12345)。
因为你在Docker容器内运行MySQL,套接字不可用,你需要通过TCP连接。在 mysql 命令中设置“--protocol”将改变它。
如果你 运行 docker 在 docker-machine 下?
执行获取ip:
docker-machine ip <machine>
returns 机器的 ip 并尝试连接 mysql:
mysql -h<docker-machine-ip>
将"localhost"改成你的真实IP地址
因为它是 mysql_connect()
如果您使用“127.0.0.1”而不是本地主机 mysql 将使用 tcp 方法并且您应该能够连接容器:
mysql -h 127.0.0.1 -P 3306 -u root
我建议查看 docker-compose。这是如何工作的:
创建一个名为 docker-compose.yml 的文件,如下所示:
version: '2'
services:
mysql:
image: mariadb:10.1.19
ports:
- 8083:3306
volumes:
- ./mysql:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: wp
接下来,运行:
$ docker-compose up
备注:
- 有关最新的 mariadb 图像标记,请参阅 https://hub.docker.com/_/mariadb/
现在,您可以这样访问 mysql 控制台:
$ mysql -P 8083 --protocol=tcp -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.5.5-10.1.19-MariaDB-1~jessie mariadb.org binary distribution
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
备注:
您可以将 -d 标志传递给 运行 detached/background 模式下的 mysql/mariadb 容器。
密码是"wp",在docker-compose.yml文件中定义。
与 maniekq 相同的建议,但使用 docker-compose 的完整示例。
我通过 运行 一个针对我的服务器的临时 docker 容器来做到这一点,这样我就不必担心我的主机上安装了什么。首先,我定义我需要的(你应该根据你的目的修改):
export MYSQL_SERVER_CONTAINER=mysql-db
export MYSQL_ROOT_PASSWORD=pswd
export DB_DOCKER_NETWORK=db-net
export MYSQL_PORT=6604
我总是创建一个新的 docker 网络,任何其他容器都需要它:
docker network create --driver bridge $DB_DOCKER_NETWORK
启动 mySQL 数据库服务器:
docker run --detach --name=$MYSQL_SERVER_CONTAINER --net=$DB_DOCKER_NETWORK --env="MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD" -p ${MYSQL_PORT}:3306 mysql
捕获新服务器容器的IP地址
export DBIP="$(docker inspect ${MYSQL_SERVER_CONTAINER} | grep -i 'ipaddress' | grep -oE '((1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])\.){3}(1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])')"
打开服务器的命令行界面:
docker run -it -v ${HOST_DATA}:/data --net=$DB_DOCKER_NETWORK --link ${MYSQL_SERVER_CONTAINER}:mysql --rm mysql sh -c "exec mysql -h${DBIP} -uroot -p"
当您退出 mySQL 界面时,最后一个容器将自行删除,而服务器将继续 运行。您还可以在服务器和主机之间共享一个卷,以便更轻松地导入数据或脚本。希望这对您有所帮助!
为了转换,您可以在主机中创建~/.my.cnf
文件:
[Mysql]
user=root
password=yourpass
host=127.0.0.1
port=3306
然后下次 运行 mysql
mysql 客户端打开连接。
mysql -u root -P 4406 -h localhost --protocol=tcp -p
记得更改用户、端口和主机,使其与您的配置相匹配。如果您的数据库用户配置了密码,则需要 -p 标志
运行 跟随 运行 容器的命令
docker run --name db_name -e MYSQL_ROOT_PASSWORD=PASS--publish 8306:3306 db_name
运行 此命令用于获取 mysql 主机中的数据库
mysql -h 127.0.0.1 -P 8306 -uroot -pPASS
你的情况是
mysql -h 127.0.0.1 -P 12345 -uroot -pPASS
docker 运行 -e MYSQL_ROOT_PASSWORD=pass --name sql-db -p 3306:3306 mysql
docker exec -it sql-db bash
mysql -u root -p
我能够使用以下命令在我的主机上连接我的 sql server5.7 运行:
mysql -h 10.10.1.7 -P 3307 --protocol=tcp -u root -p 其中给定的 ip 是我的主机 ip,3307 是 mysql docker 中转发的端口。之后输入命令类型 myql.that 的密码是 it.Now 您已从主机
连接到 mysql docker 容器
在您的终端机中 运行:docker exec -it container_name /bin/bash
然后:mysql
好的。我终于解决了这个问题。以下是我在 https://sqlflow.org/sqlflow 中使用的解决方案。
完整的解决方案
为了使演示独立,我将所有必要的代码移到了 https://github.com/wangkuiyi/mysql-server-in-docker。
解决的关键
DockerHub.comhttps://hub.docker.com/r/mysql/mysql-server我没有使用官方图片。相反,我通过在 Ubuntu 18.04 上安装 MySQL 来制作自己的。这种方法让我有机会启动 mysqld 并将其 绑定到 0.0.0.0(所有 IP)。
有关详细信息,请参阅我的 GitHub 存储库中的 these lines。
SQLFLOW_MYSQL_HOST=${SQLFLOW_MYSQL_HOST:-0.0.0.0}
echo "Start mysqld ..."
sed -i "s/.*bind-address.*/bind-address = ${SQLFLOW_MYSQL_HOST}/" \
/etc/mysql/mysql.conf.d/mysqld.cnf
service mysql start
验证我的解决方案
- Git 克隆上述 repo。
git clone https://github.com/wangkuiyi/mysql-server-in-docker
cd mysql-server-in-docker
- 构建 MySQL 服务器 Docker 映像
docker build -t mysql:yi .
- 在容器中启动 MySQL 服务器
docker run --rm -d -p 23306:3306 mysql:yi
- 如果尚未在主机上安装 MySQL 客户端。我在主机(我的工作站)上 运行ning Ubuntu 18.04,所以我使用
apt-get
。
sudo apt-get install -y mysql-client
- 从主机连接到容器中 MySQL 服务器 运行ning。
mysql --host 127.0.0.1 --port 23306 --user root -proot
从同一主机上的另一个容器连接
我们甚至可以 运行 MySQL 来自另一个容器(在同一主机上)的客户端。
docker run --rm -it --net=host mysql/mysql-server mysql \
-h 127.0.0.1 -P 13306 -u root -proot
从另一台主机连接
在我的 iMac 上,我使用 Homebrew 安装 MySQL 客户端。
brew install mysql-client
export PATH="/usr/local/opt/mysql-client/bin:$PATH"
然后,我就可以访问上面的Ubuntu主机(192.168.1.22)了。
mysql -h 192.168.1.22 -P 13306 -u root -proot
从另一台主机上的容器运行连接
我什至可以 运行 MySQL iMac 上容器 运行 中的客户端连接到 [=94= 容器中的 MySQL 服务器] 工作站。
docker run --rm -it --net=host mysql/mysql-server mysql \
-h 192.168.1.22 -P 13306 -u root -proot
特例
如果我们 运行 MySQL 客户端和服务器在不同的容器中 运行 在同一个主机上——当我们设置一个 CI,我们不需要构建自己的 MySQL 服务器 Docker 映像。相反,当我们 运行 客户端容器时,我们可以使用 --net=container:mysql_server_container_name
。
启动服务器
docker run --rm -d --name mysql mysql/mysql-server
启动客户端
docker run --rm -it --net=container:mysql mysql/mysql-server mysql \
-h 127.0.0.1 -P 3306 -u root -proot
您应该检查分配给 运行 容器的 IP 地址,然后连接到该主机:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container name or id>
比你能连接的还多:
mysql -h <IP provided by inspect command> -P <port> -u <user> -p <db name>
根据照片,进入 docker 桌面应用程序中的项目 -> MySQL -> 检查选项卡并修改有关数据库 .env
文件的信息。
.env
文件示例:
DB_CONNECTION=mysql
DB_HOST=0.0.0.0:3306
DB_PORT=3306
DB_DATABASE=testdb
DB_USERNAME=sail
DB_PASSWORD=password
先看日志有没有错误
docker ps -a
docker logs container_name
如果有任何错误,请搜索该特定错误的解决方案,如果没有错误,您可以继续下一步。
记住启动容器后 MySQL 需要几分钟才能启动,因此 运行 这些命令会在 3-4 分钟后启动。
docker exec -it container_name bash
# ONCE YOU ARE INSIDE CONTAINER
mysql -u root -p
SHOW DATABASES;
exit
从终端或命令提示符连接
mysql -h localhost -P 3306 --protocol=tcp -u root -p
如果这对某人有帮助:
我的首选解决方案
添加 ~/.my.cnf 内容
[client]
user=<yourusername>
password=typethepasswordhere
host=127.0.0.1
port=3306
然后从终端 运行 >$ mysql
你应该进入你的 sql cmd。
硬核选择
你也可以这样连接
docker exec -it containername mysql
进入sql cmd
或
docker exec -it contaiinername bash (or sh)
在容器中连接然后运行>$ mysql
(由于我对 Docker 或 mysql 管理的了解有限,这可能是一个愚蠢的问题,但由于我在这个问题上花了整整一个晚上,所以我敢问它。)
一言以蔽之
我想 运行 mysql 在 docker 容器中并从我的主机连接到它。到目前为止,我取得的最好成绩是:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
更多详情
我正在使用以下 Dockerfile
:
FROM ubuntu:14.04.3
RUN apt-get update && apt-get install -y mysql-server
# Ensure we won't bind to localhost only
RUN grep -v bind-address /etc/mysql/my.cnf > temp.txt \
&& mv temp.txt /etc/mysql/my.cnf
# It doesn't seem needed since I'll use -p, but it can't hurt
EXPOSE 3306
CMD /etc/init.d/mysql start && tail -F /var/log/mysql.log
在这个文件所在的目录中,我可以成功构建图像并运行它:
> docker build -t my-image .
> docker run -d -p 12345:3306 my-image
当我附加到图像时,它似乎工作得很好:
# from the host
> docker exec -it <my_image_name> bash
#inside of the container now
$ mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
[...]
然而我并没有从主机那里得到那么多的成功:
> mysql -P 12345 -uroot
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
更详细
- 我看到有一个问题looks like mine。但是,它不一样(而且它没有任何答案)
- 我看到有图片 dedicated to mysql,但我没有用它们取得更多成功
- 我的
grep -v
可能会觉得奇怪。不可否认,可能有更清洁的方法来做到这一点。但是当我附上我的图像时,我可以观察到它确实按预期工作(即:删除了bind-address
)。我可以在容器中看到/var/log/mysql/error.log
:
Server hostname (bind-address): '0.0.0.0'; port: 3306 - '0.0.0.0' resolves to '0.0.0.0'; Server socket created on IP: '0.0.0.0'.
简单的方法是将 mysql unix 套接字共享给主机。然后通过套接字连接
步骤:
- 为主机创建共享文件夹例如:
mkdir /host
- 运行 docker 带有卷装载选项的容器
docker run -it -v /host:/shared <mysql image>
。 - 然后更改mysql配置文件
/etc/my.cnf
并将文件中的套接字条目更改为socket=/shared/mysql.sock
- 在 docker 中重新启动 MySQL 服务
- 最终通过套接字
mysql -u root --socket=/host/mysql.sock
从主机连接到 MySQL 服务器。如果密码使用 -p 选项
service mysql restart
如果你的 Docker MySQL 主机是 运行 正确你可以从本地机器连接到它,但是你应该像这样指定主机,端口和协议:
mysql -h localhost -P 3306 --protocol=tcp -u root
将 3306 更改为您从 Docker 容器转发的端口号(在您的情况下为 12345)。
因为你在Docker容器内运行MySQL,套接字不可用,你需要通过TCP连接。在 mysql 命令中设置“--protocol”将改变它。
如果你 运行 docker 在 docker-machine 下?
执行获取ip:
docker-machine ip <machine>
returns 机器的 ip 并尝试连接 mysql:
mysql -h<docker-machine-ip>
将"localhost"改成你的真实IP地址
因为它是 mysql_connect()
如果您使用“127.0.0.1”而不是本地主机 mysql 将使用 tcp 方法并且您应该能够连接容器:
mysql -h 127.0.0.1 -P 3306 -u root
我建议查看 docker-compose。这是如何工作的:
创建一个名为 docker-compose.yml 的文件,如下所示:
version: '2'
services:
mysql:
image: mariadb:10.1.19
ports:
- 8083:3306
volumes:
- ./mysql:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: wp
接下来,运行:
$ docker-compose up
备注:
- 有关最新的 mariadb 图像标记,请参阅 https://hub.docker.com/_/mariadb/
现在,您可以这样访问 mysql 控制台:
$ mysql -P 8083 --protocol=tcp -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.5.5-10.1.19-MariaDB-1~jessie mariadb.org binary distribution
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
备注:
您可以将 -d 标志传递给 运行 detached/background 模式下的 mysql/mariadb 容器。
密码是"wp",在docker-compose.yml文件中定义。
与 maniekq 相同的建议,但使用 docker-compose 的完整示例。
我通过 运行 一个针对我的服务器的临时 docker 容器来做到这一点,这样我就不必担心我的主机上安装了什么。首先,我定义我需要的(你应该根据你的目的修改):
export MYSQL_SERVER_CONTAINER=mysql-db
export MYSQL_ROOT_PASSWORD=pswd
export DB_DOCKER_NETWORK=db-net
export MYSQL_PORT=6604
我总是创建一个新的 docker 网络,任何其他容器都需要它:
docker network create --driver bridge $DB_DOCKER_NETWORK
启动 mySQL 数据库服务器:
docker run --detach --name=$MYSQL_SERVER_CONTAINER --net=$DB_DOCKER_NETWORK --env="MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD" -p ${MYSQL_PORT}:3306 mysql
捕获新服务器容器的IP地址
export DBIP="$(docker inspect ${MYSQL_SERVER_CONTAINER} | grep -i 'ipaddress' | grep -oE '((1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])\.){3}(1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])')"
打开服务器的命令行界面:
docker run -it -v ${HOST_DATA}:/data --net=$DB_DOCKER_NETWORK --link ${MYSQL_SERVER_CONTAINER}:mysql --rm mysql sh -c "exec mysql -h${DBIP} -uroot -p"
当您退出 mySQL 界面时,最后一个容器将自行删除,而服务器将继续 运行。您还可以在服务器和主机之间共享一个卷,以便更轻松地导入数据或脚本。希望这对您有所帮助!
为了转换,您可以在主机中创建~/.my.cnf
文件:
[Mysql]
user=root
password=yourpass
host=127.0.0.1
port=3306
然后下次 运行 mysql
mysql 客户端打开连接。
mysql -u root -P 4406 -h localhost --protocol=tcp -p
记得更改用户、端口和主机,使其与您的配置相匹配。如果您的数据库用户配置了密码,则需要 -p 标志
运行 跟随 运行 容器的命令
docker run --name db_name -e MYSQL_ROOT_PASSWORD=PASS--publish 8306:3306 db_name
运行 此命令用于获取 mysql 主机中的数据库
mysql -h 127.0.0.1 -P 8306 -uroot -pPASS
你的情况是
mysql -h 127.0.0.1 -P 12345 -uroot -pPASS
docker 运行 -e MYSQL_ROOT_PASSWORD=pass --name sql-db -p 3306:3306 mysql
docker exec -it sql-db bash
mysql -u root -p
我能够使用以下命令在我的主机上连接我的 sql server5.7 运行: mysql -h 10.10.1.7 -P 3307 --protocol=tcp -u root -p 其中给定的 ip 是我的主机 ip,3307 是 mysql docker 中转发的端口。之后输入命令类型 myql.that 的密码是 it.Now 您已从主机
连接到 mysql docker 容器在您的终端机中 运行:docker exec -it container_name /bin/bash
然后:mysql
好的。我终于解决了这个问题。以下是我在 https://sqlflow.org/sqlflow 中使用的解决方案。
完整的解决方案
为了使演示独立,我将所有必要的代码移到了 https://github.com/wangkuiyi/mysql-server-in-docker。
解决的关键
DockerHub.comhttps://hub.docker.com/r/mysql/mysql-server我没有使用官方图片。相反,我通过在 Ubuntu 18.04 上安装 MySQL 来制作自己的。这种方法让我有机会启动 mysqld 并将其 绑定到 0.0.0.0(所有 IP)。
有关详细信息,请参阅我的 GitHub 存储库中的 these lines。
SQLFLOW_MYSQL_HOST=${SQLFLOW_MYSQL_HOST:-0.0.0.0}
echo "Start mysqld ..."
sed -i "s/.*bind-address.*/bind-address = ${SQLFLOW_MYSQL_HOST}/" \
/etc/mysql/mysql.conf.d/mysqld.cnf
service mysql start
验证我的解决方案
- Git 克隆上述 repo。
git clone https://github.com/wangkuiyi/mysql-server-in-docker cd mysql-server-in-docker
- 构建 MySQL 服务器 Docker 映像
docker build -t mysql:yi .
- 在容器中启动 MySQL 服务器
docker run --rm -d -p 23306:3306 mysql:yi
- 如果尚未在主机上安装 MySQL 客户端。我在主机(我的工作站)上 运行ning Ubuntu 18.04,所以我使用
apt-get
。sudo apt-get install -y mysql-client
- 从主机连接到容器中 MySQL 服务器 运行ning。
mysql --host 127.0.0.1 --port 23306 --user root -proot
从同一主机上的另一个容器连接
我们甚至可以 运行 MySQL 来自另一个容器(在同一主机上)的客户端。
docker run --rm -it --net=host mysql/mysql-server mysql \
-h 127.0.0.1 -P 13306 -u root -proot
从另一台主机连接
在我的 iMac 上,我使用 Homebrew 安装 MySQL 客户端。
brew install mysql-client
export PATH="/usr/local/opt/mysql-client/bin:$PATH"
然后,我就可以访问上面的Ubuntu主机(192.168.1.22)了。
mysql -h 192.168.1.22 -P 13306 -u root -proot
从另一台主机上的容器运行连接
我什至可以 运行 MySQL iMac 上容器 运行 中的客户端连接到 [=94= 容器中的 MySQL 服务器] 工作站。
docker run --rm -it --net=host mysql/mysql-server mysql \
-h 192.168.1.22 -P 13306 -u root -proot
特例
如果我们 运行 MySQL 客户端和服务器在不同的容器中 运行 在同一个主机上——当我们设置一个 CI,我们不需要构建自己的 MySQL 服务器 Docker 映像。相反,当我们 运行 客户端容器时,我们可以使用 --net=container:mysql_server_container_name
。
启动服务器
docker run --rm -d --name mysql mysql/mysql-server
启动客户端
docker run --rm -it --net=container:mysql mysql/mysql-server mysql \
-h 127.0.0.1 -P 3306 -u root -proot
您应该检查分配给 运行 容器的 IP 地址,然后连接到该主机:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container name or id>
比你能连接的还多:
mysql -h <IP provided by inspect command> -P <port> -u <user> -p <db name>
根据照片,进入 docker 桌面应用程序中的项目 -> MySQL -> 检查选项卡并修改有关数据库 .env
文件的信息。
.env
文件示例:
DB_CONNECTION=mysql
DB_HOST=0.0.0.0:3306
DB_PORT=3306
DB_DATABASE=testdb
DB_USERNAME=sail
DB_PASSWORD=password
先看日志有没有错误
docker ps -a
docker logs container_name
如果有任何错误,请搜索该特定错误的解决方案,如果没有错误,您可以继续下一步。
记住启动容器后 MySQL 需要几分钟才能启动,因此 运行 这些命令会在 3-4 分钟后启动。
docker exec -it container_name bash
# ONCE YOU ARE INSIDE CONTAINER
mysql -u root -p
SHOW DATABASES;
exit
从终端或命令提示符连接
mysql -h localhost -P 3306 --protocol=tcp -u root -p
如果这对某人有帮助:
我的首选解决方案
添加 ~/.my.cnf 内容
[client]
user=<yourusername>
password=typethepasswordhere
host=127.0.0.1
port=3306
然后从终端 运行 >$ mysql
你应该进入你的 sql cmd。
硬核选择
你也可以这样连接
docker exec -it containername mysql
进入sql cmd
或
docker exec -it contaiinername bash (or sh)
在容器中连接然后运行>$ mysql