You need to enable JavaScript to run this app.
文档中心
云原生消息引擎

云原生消息引擎

复制全文
下载 pdf
客户端授权
创建客户端授权
复制全文
下载 pdf
创建客户端授权
本文介绍在 MQTT Dashboard 上创建客户端授权检查器的操作步骤。​
前提条件​
使用 MySQL 作为数据源时,请先确保以下事项:​
  • 目标 MySQL 实例处于正常运行状态。​
注意事项​
相关注意事项,请参见注意事项。​
创建授权​
  1. 在 Dashboard 导航栏选择访问控制 > 客户端授权,单击页面右上角的创建。​
  1. 选择目标数据源。​
  1. 配置授权参数,单击页面左下角的创建,创建授权。​
说明​
在创建授权后,授权检查器默认处于启用状态。​
创建内置数据库授权​
内置数据库授权无需配置参数。​
​Image​​
说明​
在创建内置数据库授权后,您可通过 Dashboard 在内置数据库中配置授权规则,具体操作步骤,请参见配置内置数据库授权规则。​
创建 MySQL 授权​
​Image​​
​
参数​
说明​
服务​
填写查询的 MySQL 实例的私网访问地址。​
格式为 {私网域名}:{端口}。​
数据库​
填写查询的数据库名称。​
用户名​
填写用户名。​
注意​
确保对应用户具备指定数据库的读写权限。​
密码​
填写密码。​
启用 TLS​
配置是否启用 TLS 校验,以及是否校验服务器证书。​
如需校验,请分别配置 Cert 和 Key。​
连接池大小​
配置 MQTT 到指定 MySQL 数据库的并发连接数。​
默认值为 8,您可根据业务需求配置为其他整数值。​
SQL​
根据表结构,填写查询 SQL 语句,具体要求请参见 SQL 表结构与查询语句。​
​
SQL 表结构与查询语句​
MQTT 支持多种 MySQL 表结构、多个表结构联合查询,或者从视图中查询。您只需要提供一个查询的 SQL 模板,确保查询结果中包含以下字段:​
​
字段​
说明​
permission​
用于指定操作权限,取值如下:​
  • allow:允许​
  • deny:拒绝​
action​
用于指定当前规则适用的操作,取值如下:​
  • publish:发布​
  • subscribe:订阅​
  • all:发布&订阅​
topic​
用于指定当前规则适用的 Topic,支持使用主题过滤器或主题占位符。​
  • 主题占位符​
  • 将当前客户端信息动态替换到匹配返回的 Topic 中,支持的主题占位符如下:​
  • ${clientid}:动态替换为客户端 ID。​
  • ${username:态替换为客户端的用户名。​
说明​
  • 主题占位符只能用于替换主题的整个字段,例如 a/b/${username}/c/d,但是不能用于替换字段的一部分,例如 a/b${username}c/d。​
  • 如果您的 Topic 中包含与占位符相同的字符,则在规格写入过程中可能会发生冲突,您可以使用 ${$} 的格式,来对字符 $ 进行转义,例如 t/${$}{username} 会被为解释为 t/${username},而不是将username 换为客户端的用户名。​
qos(可选)​
用于指定规则适用的消息 QoS,取值可为 0、1、2。​
支持用 , 分隔的字符串指定多个 QoS,例如 0,1。​
若未指定 QoS 级别,则规格将默认适用于所有 QoS 级别的消息。​
retain(可选)​
用于指定当前规则是否允许发布保留消息,取值如下:​
  • 0:允许发布保留消息。​
  • 1:禁止发布保留消息。​
若未指定 retain 取值,则默认允许发布保留消息。​
​
  • 示例表结构​
  • 在指定数据库中创建如下表结构:​
  • ​
    CREATE TABLE `mqtt_acl` (​
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT,​
    `username` varchar(100) NOT NULL,​
    `permission` varchar(5) NOT NULL,​
    `action` varchar(9) NOT NULL,​
    `topic` varchar(100) NOT NULL,​
    `qos` tinyint(1),​
    `retain` tinyint(1),​
    INDEX username_idx(username),​
    PRIMARY KEY (`id`)​
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;​
    ​
说明​
当系统中有大量权限数据时,请确保查询使用的表已优化并使用有效的索引,以提升大量连接时的数据查找速度、并降低 MQTT 负载。​
  • 添加规则内容​
  • 在表 mqtt_acl 中添加规则示例如下:​
  • 规则内容:用户名为 mqtt_u,禁止发布到 t/1 主题。​
  • ​
    INSERT INTO mqtt_acl(username, permission, action, topic) VALUES ('mqtt_u', 'deny', 'publish', 't/1');​
    ​
  • 规则内容:用户名为 mqtt_u,禁止发布保留消息到 t/2 主题。​
  • ​
    INSERT INTO mqtt_acl(username, permission, action, topic, retain) VALUES ('mqtt_u', 'deny', 'publish', 't/2', 1);​
    ​
  • SQL 查询语句​
  • 以 {username} 作为查询条件,在表 mqtt_acl 中查询客户端权限信息的查询语句示例如下:​
  • ​
    SELECT ​
    permission, action, topic, qos, retain ​
    FROM mqtt_acl ​
    WHERE username = ${username}​
    ​
​
最近更新时间:2025.08.04 17:46:11
这个页面对您有帮助吗?
有用
有用
无用
无用