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 连接。