Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 从主机连接到Docker容器_Mysql_Jdbc_Docker - Fatal编程技术网

Mysql 从主机连接到Docker容器

Mysql 从主机连接到Docker容器,mysql,jdbc,docker,Mysql,Jdbc,Docker,我刚刚启动并运行了official,并让它在我的机器上本地运行: docker run --name mydb -e MYSQL_ROOT_PASSWORD=12345 -d mysql:5.7.11 该屏幕上的说明告诉您如何从另一个容器(配置为命令行客户端)内部连接到MySQL服务器(容器)。但是我有一个通用的JDBC胖客户端(),我想知道如何连接到我的docker容器 对于JDBC连接字符串,我需要同时提供主机名和数据库名,我可以使用什么?我可以想象Docker容器可以从我的主机操作系统寻

我刚刚启动并运行了official,并让它在我的机器上本地运行:

docker run --name mydb -e MYSQL_ROOT_PASSWORD=12345 -d mysql:5.7.11
该屏幕上的说明告诉您如何从另一个容器(配置为命令行客户端)内部连接到MySQL服务器(容器)。但是我有一个通用的JDBC胖客户端(),我想知道如何连接到我的docker容器

对于JDBC连接字符串,我需要同时提供主机名和数据库名,我可以使用什么?我可以想象Docker容器可以从我的主机操作系统寻址,但我还没有创建任何数据库,因此我不确定我可以提供什么
dbname
值:

jdbc:mysql://<hostname>:3306/<dbname>
jdbc:mysql://:3306/

您可以使用forwarding 3306运行实例:

$ docker run --expose=3306 -p 3306 mysql

您可以指定以下选项:

jdbc:mysql://127.0.0.1:3306/<dbname>
您可能需要更改MySQL配置

可通过以下方式进入容器内:

$ docker exec -it mydb bash
然后你可以:

$ echo "bind-address = 0.0.0.0" >> /etc/mysql/my.cnf
别忘了重新加载mysql

然后必须创建数据库并导入模式(如果需要)

$mysql-uroot-p12345-e“创建数据库mydb”
$mysql-uroot-p12345 mydb
您可以使用forwarding 3306运行实例:

$ docker run --expose=3306 -p 3306 mysql

您可以指定以下选项:

jdbc:mysql://127.0.0.1:3306/<dbname>
您可能需要更改MySQL配置

可通过以下方式进入容器内:

$ docker exec -it mydb bash
然后你可以:

$ echo "bind-address = 0.0.0.0" >> /etc/mysql/my.cnf
别忘了重新加载mysql

然后必须创建数据库并导入模式(如果需要)

$mysql-uroot-p12345-e“创建数据库mydb”
$mysql-uroot-p12345 mydb
谢谢@joksnet(+1)-请查看我更新的问题,其中现在包含我运行的确切Docker命令。当我尝试合并您的
--expose
-p
参数时,会出现各种错误。如何使用(合并的)expose/p参数运行命令?再次感谢!再次感谢!!!如果您不介意的话,还有一个快速跟进的问题:当您说“别忘了重新加载mysql”时,您的意思是停止/重新启动容器吗?再次感谢!只需尝试从容器内部重新加载
服务mysql
。)谢谢@joksnet(+1)-请查看我更新的问题,其中现在包含我运行的确切Docker命令。当我尝试合并您的
--expose
-p
参数时,会出现各种错误。如何使用(合并的)expose/p参数运行命令?再次感谢!再次感谢!!!如果您不介意的话,还有一个快速跟进的问题:当您说“别忘了重新加载mysql”时,您的意思是停止/重新启动容器吗?再次感谢!只需尝试从容器内部重新加载
服务mysql
。)