mysql - mysqld:拨打 tcp 127.0.0.1:3306:连接:连接被拒绝
问题描述
我正在尝试对mysql
使用prom/mysqld-exporter
和prom/prometheus
. 我已经配置了docker-compose.yml文件,如下所示:
version: '3'
services:
mysql:
image: mysql
container_name: mysql
restart: always
volumes:
- mysql:/var/lib/mysql
# command:
# - CREATE USER 'root'@'localhost' IDENTIFIED BY 'password' WITH MAX_USER_CONNECTIONS 3;
# - GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'root'@'localhost';
environment:
- MYSQL_ROOT_PASSWORD= password
- MYSQL_DATABASE= db #Defining a new Database
- MYSQL_USER= mostafa
- MYSQL_PASSWORD= ghadimi
ports:
- 3306:3306
- 33060:33060
prometheus:
image: prom/prometheus
container_name: prometheus
ports:
- 9090:9090
volumes:
- prometheus:/prometheus
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
command:
- --config.file=/etc/prometheus/prometheus.yml
mysql-exporter:
image: prom/mysqld-exporter
container_name: mysql-exporter
ports:
- 9104:9104
volumes:
- ./mysql-exporter/.my.cnf:/root/.my.cnf
depends_on:
- mysql
volumes:
mysql:
prometheus:
这是我的 ./mysql-exporter/.my.cnf 文件:
[client]
user=mostafa
password=ghadimi
运行docker-compose up
命令后,一切正常,除了以下错误!:
mysqld:拨打 tcp 127.0.0.1:3306:连接:连接被拒绝
我不知道我该如何解决它!
PS:我也尝试通过其容器和docker exec -it <container-id> bash
命令连接到 mysql,并且尝试了所有可能的密码(例如空字符串和我在 docker-compose 文件中设置的密码),但我遇到了另一个错误:
错误 1045 (28000): 用户 'root'@'localhost' 的访问被拒绝(使用密码:是)
解决方案
mysql-d 导出器正在寻找 mysql 实例localhost
,但它没有localhost
在 mysqld 容器内部运行。您必须将外部连接字符串与主机一起传递,mysql
因为这是 docker-compose 中 mysql 服务的名称。从mysqld-exporter docs
- 您必须使用此数据源连接字符串将环境变量传递给 mysqld-exporter 容器:
mysql-exporter:
image: prom/mysqld-exporter
container_name: mysql-exporter
ports:
- 9104:9104
volumes:
- ./mysql-exporter/.my.cnf:/root/.my.cnf
environment:
- DATA_SOURCE_NAME="user:password@mysql:3306/database"
depends_on:
- mysql
并将用户、密码和数据库名称更改为您想要的。
推荐阅读
- angular - 根据条件更改文本
- postman - 环境变量的值在 Postman 中重置为 null
- javascript - Javascript WebRTC Firefox:InvalidStateError:无法在稳定中创建答案
- google-people-api - 使用 Google people API 检索联系人时出现 FAILED_PRECONDITION 错误
- visual-studio-code - 在 Visual Studio Code 中选择整行但光标在左侧?
- spring-boot - 为什么zaxxer4.0.0依赖需要zaxxer2.5.1?
- java - RawDatagramSocket Dart 在 Java Android 中的类似实现
- python - Python新建n帧视频比输入视频重
- excel - Excel - 如何仅收集最后 20 个值(数据透视表)
- java - ortools项目无法执行jar,Loader.loadNativeLibraries()错误