EMQX 配置mysql认证

本文介绍如何配置EMQX使用MySQL进行用户认证,包括调整MySQL的密码插件、创建专用数据库和表以及配置EMQX插件的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

EMQX 配置mysql认证

配置emqx_auth_mysql插件

编辑 etc/plugins/emqx_auth_mysql.conf

## 服务器地址
auth.mysql.server = 127.0.0.1:3306

## 连接池大小
auth.mysql.pool = 8

auth.mysql.username = emqx

auth.mysql.password = public

auth.mysql.database = mqtt

auth.mysql.query_timeout = 5s

MySQL(8.0)需要以下配置

不同于以往版本,MySQL 8.0 对账号密码配置默认使用caching_sha2_password插件,需要将密码插件改成mysql_native_password

  • 修改 mysql.user

    ## 切换到 mysql 数据库
    mysql> use mysql;
    
    ## 查看 user 表
    
    mysql> select user, host, plugin from user;
    +------------------+-----------+-----------------------+
    | user             | host      | plugin                |
    +------------------+-----------+-----------------------+
    | root             | %         | caching_sha2_password |
    | mysql.infoschema | localhost | caching_sha2_password |
    | mysql.session    | localhost | caching_sha2_password |
    | mysql.sys        | localhost | caching_sha2_password |
    | root             | localhost | caching_sha2_password |
    +------------------+-----------+-----------------------+
    
    ## 修改密码插件
    mysql> ALTER USER 'your_username'@'your_host' IDENTIFIED WITH mysql_native_password BY 'your_password';
    Query OK, 0 rows affected (0.01 sec)
    
    ## 刷新
    mysql> FLUSH PRIVILEGES;
    Query OK, 0 rows affected (0.00 sec)
    
  • 修改 my.conf

    my.cnf 配置文件里面的 [mysqld] 下面加一行

    default_authentication_plugin=mysql_native_password
    
  • 重启 MySQL 即可

Mysql 新建认证库/表

新建库

CREATE DATABASE mqtt;

新建表

CREATE TABLE `mqtt_user` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(100) DEFAULT NULL,
  `password` varchar(100) DEFAULT NULL,
  `salt` varchar(35) DEFAULT NULL,
  `is_superuser` tinyint(1) DEFAULT 0,
  `created` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `mqtt_username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

​ 添加默认用户密码

INSERT INTO `mqtt_user` ( `username`, `password`, `salt`)
VALUES
	('emqx', 'efa1f375d76194fa51a3556a97e641e61685f914d446979da50a551a4333ffd7', NULL);

启用 MySQL 认证后,你可以通过用户名: emqx,密码:public 连接。

最后启动emqx_auth_mysql 插件即可

### 将 EMQX 配置为与 MySQL 8 集成的方法 为了实现 EMQXMySQL 8 的集成,可以按照以下方法完成配置。此过程涉及创建数据库表、配置 EMQX 数据桥接以及验证连接。 #### 创建 MySQL 表结构 在 MySQL 中,首先需要创建用于存储 IoT 设备数据的表结构。例如,假设我们需要记录设备 ID、温度、湿度和时间戳,则可以通过以下 SQL 命令创建 `iot_data` 表: ```sql CREATE TABLE iot_data ( id INT AUTO_INCREMENT PRIMARY KEY, device_id VARCHAR(50), temperature FLOAT, humidity FLOAT, create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); ``` 通过上述命令定义了一个基本的表结构[^2],其中包含了设备唯一标识符 (`device_id`) 和传感器读数字段(如 `temperature` 和 `humidity`),并设置了默认的时间戳列以便自动记录每条数据的写入时间。 #### 安装必要的插件和支持包 确保已启用支持关系型数据库操作的相关插件。对于大多数标准部署而言,默认情况下这些功能可能已经可用;但如果未激活的话,请参照官方文档说明开启对应模块。此外还需确认所使用的驱动版本兼容目标 RDBMS 版本即此处提到的 MySQL v8.x系列[^1]. #### 配置 EMQX 连接到 MySQL 进入 EMQX 控制台界面或者编辑其配置文件来指定新的资源链接参数。以下是 YAML 文件形式的一个例子展示如何设定指向本地运行实例上的特定模式下的前述新建表格作为消息转发目的地之一: ```yaml resource.mysql: type: mysql pool_size: 8 min_pool_size: 1 max_overflow: 16 enable_keepalive: true keepalive_interval: 30s connect_timeout: 5s query_mode: batch_rows sql_string_limit: 1MB params: username: root # 替换为您实际使用的用户名 password: yourpassword # 替换为您的密码 database: testdb # 使用的目标数据库名称 server: "localhost" port: 3306 # 默认端口除非更改过 ``` 以上片段展示了完整的资源配置细节,包括但不限于身份认证凭证、网络地址定位信息以及其他性能调优选项等[^2]. 一旦完成了上述步骤之后就可以继续添加规则引擎的动作部分从而触发向刚才准备好的外部存储介质发送经过处理后的有效载荷副本了. #### 测试与验证 最后一步就是执行一些基础性的单元检验工作以保证整个链条能够正常运作起来而没有任何阻塞点存在。这通常意味着要先手动构造几组样本请求看看它们能否被正确解析并且成功入库保存下来然后再考虑自动化流程方面的事情. ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值