连接到运行在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)
我不知道我错了。我该如何解决它?
谢谢。
您不使用标准的mysql端口3306
。因此,您必须指定使用的端口
mysql -u abc_dev -p -h localhost --port 3310
我认为它在搬运工-compose.yml约:'的MySQL-DB: 图像:MySQL的:5.7.11 命令:mysqld的--lower_case_table_names = 1个 端口: - “3310:3306” env_file: - 。/ env-variables/commons.env' – pronto
那就对了。但是,mysql cli-client并不知道docker的任何信息。您必须告诉mysq客户端在哪里查找mysql服务器。如果客户端不是假设你想连接到'/ var/run/mysqld/mysqld.sock'。我使用更好的代码编辑了我的帖子 – Ohmen
我在编写时试过:'mysql -u abc_dev -p -h localhost --port 3310'但是'无法通过套接字连接到本地MySQL服务器'/ var/run/mysqld/mysqld .sock'(2)'没有改变。 – pronto
确保您在运行该命令时位于容器内部,并且确保用户'abc_dev'有权限从本地主机访问。 – Abanoub
我对这些东西很新。我怎么能确定我在容器内? – pronto
这个命令打开容器'docker exec -it myContainerName/bin/bash'中的交互式shell,然后执行你的mysql命令 – Abanoub