【发布时间】:2020-03-10 12:01:32
【问题描述】:
我有两个环境:我的本地机器 Mac 和 VPS 上的 linux。问题是我无法使用 localhost 从 VPS 连接到我的数据库。 在我的本地机器上一切正常。
本地:
mysql -u root mydb -h 127.0.0.1 --password=password --port=2345 //OK
mysql -u root mydb -h 0.0.0.0 --password=password --port=2345 //OK
mysql -u root mydb -h localhost --password=password --port=2345 //OK
即使使用 VPS 的公共 ip,我也可以从本地机器连接到远程数据库。
VPS:
mysql -u root mydb -h 127.0.0.1 --password=password --port=2345 //OK
mysql -u root mydb -h 0.0.0.0 --password=password --port=2345 //OK
mysql -u root mydb -h localhost --password=password --port=2345 //KO <-
错误:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
我使用以下 docker 文件来创建我的图像。
DockerFile:
FROM mysql:8.0
COPY *.sql /docker-entrypoint-initdb.d/
docker-compose.yaml:
version: '3.7'
services:
ls:
image: ***/db-container:v6 # <-my image
container_name: db-container
restart: always
environment:
MYSQL_DATABASE: 'mydb'
MYSQL_USER: 'user'
MYSQL_PASSWORD: 'password'
MYSQL_ROOT_PASSWORD: 'password'
ports:
# <Port exposed> : < MySQL Port running inside container>
- '2345:3306'
expose:
# Opens port 3306 on the container
- '3306'
volumes:
- db-container:/var/lib/mysql
volumes:
db-container:
容器内查询:
mysql> SELECT host, user FROM mysql.user;
+-----------+------------------+
| host | user |
+-----------+------------------+
| % | root |
| % | user |
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+------------------+
mysql> SELECT * FROM performance_schema.host_cache;
Empty set (0.02 sec)
【问题讨论】:
-
对于失败的连接(KO),请记录看到的错误信息。
-
我在尝试连接本地主机时添加了错误
-
这里是您的问题的可能解决方案:stackoverflow.com/questions/33001750/…
-
您是否尝试使用 docker 容器的 IP 而不是 127.0.0.1?... 比如 10.0.1.12:2345 ? @Alexey
标签: mysql networking docker-compose localhost vps