1.EMQX DASHBOARD:400 TEST_FAILED: {start_pool_failed,<<“PROBE_C1eoG7YT_mysql:dryrun”>>,{shutdown,#{cause => econnrefused,port => 3306,user => <<“root”>>,host => “127.0.0.1”,database => <<“emqx_data_test”>>}}}
2. emqx 容器:e319823e24bb emqx/emqx-enterprise:5.8.5 “/usr/bin/docker-ent…” 20 hours ago Up 45 minutes 4370/tcp, 0.0.0.0:1883->1883/tcp, 0.0.0.0:8083-8084->8083-8084/tcp, 0.0.0.0:8883->8883/tcp, 0.0.0.0:18083->18083/tcp, 5369/tcp emqx
3.emqx logs:
2025-03-16 18:42:36 2025-03-16T10:42:36.517751+00:00 [warning] tag: CONNECTOR/MYSQL, msg: start_resource_failed, reason: {start_pool_failed,<<“connector:mysql:my_emqx_test”>>,{shutdown,#{cause => econnrefused,port => 3306,user => <<“root”>>,host => “127.0.0.1”,database => <<“emqx_data_test”>>}}}, resource_id: <<“connector:mysql:my_emqx_test”>>
PS C:\Users\luke\Desktop>
这是完全连不上,telenet都127.0.0.1 3306都通不了的情况
因为你使用的是 docker 容器安装的 emqx。
你设置为 127.0.0.1:3360, 相当于在 emqx 容器内去连他容器内的地址。
猜你的 mysql,应该是装在容器外面,或者另一个容器里面,
有 2 个选项:
- 使用 docker-compose 把 emqx 和 mysql 窗口都部署在同一个网络里面。
- 如果你的 emqx 和 mysql 都装在同一台宿主机上,并且把端口都 export 到宿主机了,那使用 emqx 直连你的宿主机的 IP:3360
推荐使用第一种方法。
我是单独安装的mysql,没有安装mysql 容器
那就用第二个方法就行了。
只要记住一点:你配置的是你的 emqx 容器 去连外界的 mysql,所以必须要是容器能连上去的地址。不能是 127.0.0.1 这样的窗器自己的地址。
每个机器的 IP 都不一样,
你把你的部署环境详细列给 AI,然后问他怎么连,他就会一步步告诉你的。AI 很有耐心的。
version: ‘3.8’
services:
emqx:
image: emqx/emqx:latest
container_name: emqx
ports:
- “1883:1883” # MQTT 端口
- “8083:8083” # MQTT over WebSocket 端口
- “8081:8081” # EMQX Dashboard 端口
environment:
# 配置 EMQX 使用宿主机的 MySQL
EMQX_AUTH__MYSQL__SERVER: 172.22.208.1:3306 # 替换为宿主机的实际 IP 地址
EMQX_AUTH__MYSQL__USERNAME:root # MySQL 用户名
EMQX_AUTH__MYSQL__PASSWORD: 141598kj # MySQL 密码
EMQX_AUTH__MYSQL__DATABASE: emqx_data_test # MySQL 数据库名
networks:
- my_network
networks:
my_network:
driver: bridge
我使用的是企业版,可以这样配置吗?
修改了以后,还是不行
EMQX Dashboard
400 TEST_FAILED: {start_pool_failed,<<“PROBE_h52STeJX_mysql:dryrun”>>,{shutdown,#{cause => econnrefused,port => 3306,user => <<“root”>>,host => “127.0.0.1”,database => <<“emqx_data_test”>>}}}
docker-emqx.log
2025-03-16 19:18:37 2025-03-16T11:18:37.777786+00:00 [warning] tag: CONNECTOR/MYSQL, msg: start_resource_failed, reason: {start_pool_failed,<<“connector:mysql:my_emqx_test”>>,{shutdown,#{cause => econnrefused,port => 3306,user => <<“root”>>,host => “127.0.0.1”,database => <<“emqx_data_test”>>}}}, resource_id: <<“connector:mysql:my_emqx_test”>>
docker-compose
version: ‘3.8’
services:
emqx:
image: emqx/emqx:latest
container_name: emqx
ports:
- “1883:1883” # MQTT 端口
- “8083:8083” # MQTT over WebSocket 端口
- “8081:8081” # EMQX Dashboard 端口
environment:
# 配置 EMQX 使用宿主机的 MySQL
EMQX_AUTH__MYSQL__SERVER: 172.22.208.1:3306 # 替换为宿主机的实际 IP 地址
EMQX_AUTH__MYSQL__USERNAME:root # MySQL 用户名
EMQX_AUTH__MYSQL__PASSWORD: 141598kj # MySQL 密码
EMQX_AUTH__MYSQL__DATABASE: emqx_data_test # MySQL 数据库名
networks:
- my_network
networks:
my_network:
driver: bridge
你用的 latest,应该是用的 5.8.x
但是你的配置方式用的是 4.x 的,根本就没有配置成功。你看日志里面连的还是 127.0.0.1
你只需要把这些环境变量去掉,把正确的 mysql ip 从 dashboard 上配置就行了。
2025-03-21 14:39:04 2025-03-21T06:39:04.368659+00:00 [warning] tag: CONNECTOR/MYSQL, msg: start_resource_failed, reason: {start_pool_failed,<<“connector:mysql:my_emqx_test”>>,{shutdown,#{cause => {1130,undefined,<<“Host ‘DESKTOP-AIBQ7VU.mshome.net’ is not allowed to connect to this MySQL server”>>},port => 3306,user => <<“root”>>,host => “172.22.208.1”,database => <<“emqx_data_test”>>}}}, resource_id: <<“connector:mysql:my_emqx_test”>>
version: ‘5.8’
services:
emqx:
image: emqx/emqx-enterprise:5.8.5
container_name: emqx
ports:
- “1883:1883” # MQTT 端口
- “8083:8083” # MQTT over WebSocket 端口
- “8081:8081” # EMQX Dashboard 端口
environment:
# 配置 EMQX 使用宿主机的 MySQL
EMQX_AUTH__MYSQL__SERVER: 172.22.208.1:3306 # 替换为宿主机的实际 IP 地址
EMQX_AUTH__MYSQL__USERNAME:root # MySQL 用户名
EMQX_AUTH__MYSQL__PASSWORD: 141598kj # MySQL 密码
EMQX_AUTH__MYSQL__DATABASE: emqx_data_test # MySQL 数据库名
networks:
- my_network
networks:
my_network:
driver: bridge
还是连不上,怎么回事?
这是已经能网络连上了,但是你的mysql 不让除了 127.0.0.1 外的 host 连上来,你设置一个 mysql 就可以了。不懂就问下 AI。