连接到运行在Docker容器上的mysql ubuntu 16.04

问题描述:

我在docker上有mysql容器。 Mysql现在正在运行正确(因为我的应用程序正在运行)。 当我输入​​我看到mysql已启动。这是pom.xml中的相关部分:连接到运行在Docker容器上的mysql ubuntu 16.04

   <driver>com.mysql.jdbc.Driver</driver> 
       <url>jdbc:mysql://127.0.0.1:3310/fraud_dev</url> 
       <defaultSchemaName>abc_dev</defaultSchemaName> 
       <username>abc_dev</username> 
       <password>abc_dev_123</password> 

我想在localhost终端上连接mysql。我打字:

mysql -u 'abc_dev'@'localhost:3310' -p

我打字的密码。然后我收到此错误:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

我不知道我错了。我该如何解决它?

谢谢。

+0

确保您在运行该命令时位于容器内部,并且确保用户'abc_dev'有权限从本地主机访问。 – Abanoub

+0

我对这些东西很新。我怎么能确定我在容器内? – pronto

+0

这个命令打开容器'docker exec -it myContainerName/bin/bash'中的交互式shell,然后执行你的mysql命令 – Abanoub

您不使用标准的mysql端口3306。因此,您必须指定使用的端口

mysql -u abc_dev -p -h localhost --port 3310 
+0

我认为它在搬运工-compose.yml约:'的MySQL-DB: 图像:MySQL的:5.7.11 命令:mysqld的--lower_case_table_names = 1个 端口: - “3310:3306” env_file: - 。/ env-variables/commons.env' – pronto

+0

那就对了。但是,mysql cli-client并不知道docker的任何信息。您必须告诉mysq客户端在哪里查找mysql服务器。如果客户端不是假设你想连接到'/ var/run/mysqld/mysqld.sock'。我使用更好的代码编辑了我的帖子 – Ohmen

+0

我在编写时试过:'mysql -u abc_dev -p -h localhost --port 3310'但是'无法通过套接字连接到本地MySQL服务器'/ var/run/mysqld/mysqld .sock'(2)'没有改变。 – pronto