1. イメージをプルする
2. イメージを実行する
3. emqサービスページに入るブラウザに 初期アカウント: admin、パスワード: public 4. emq を設定する (V3.1.0 の場合)emq ユーザーの権限を設定します。emq は、mongo、redis、pgsql など複数のデータベース認証もサポートしています。興味があれば、自分で調べてみてください。 # コンテナに入ります。/bin/bash を使用して入ることはできません。docker exec -it emq /bin/sh 1. まず、匿名認証をオフにします(デフォルトではオンになっており、誰でもログインできます) # 設定ファイルを編集する vi /opt/emqttd/etc/emq.conf # allowAnonymous を True から false に変更 allow_anonymous = 偽 2. ユーザーと権限のMySQLテーブルを作成します。MySQLコンテナをプルするか、UbuntuのMySQLで直接作成することができます。 データベース emq 文字セット utf8 を作成します。 eqm を使用します。 テーブル mqtt_user を作成します ( id int(11) 符号なし NOT NULL AUTO_INCREMENT, ユーザー名 varchar(100) デフォルト NULL, パスワードvarchar(100) デフォルトNULL、 ソルトvarchar(20) デフォルトNULL、 is_superuser tinyint(1) デフォルト 0, 作成日時 DEFAULT NULL、 主キー (id)、 ユニークキー mqtt_username (ユーザー名) )ENGINE=MyISAM デフォルト文字セット=utf8; テーブル mqtt_acl を作成します ( id int(11) 符号なし NOT NULL AUTO_INCREMENT, allow int(1) デフォルト NULL コメント '0: 拒否、1: 許可'、 ipaddr varchar(60) デフォルト NULL コメント 'IpAddress', ユーザー名 varchar(100) デフォルト NULL コメント 'ユーザー名', clientid varchar(100) デフォルト NULL コメント 'ClientId', アクセス int(2) NOT NULL COMMENT '1: subscribe、2: publish、3: pubsub'、 topic varchar(100) NOT NULL DEFAULT '' COMMENT 'トピックフィルター', 主キー (id) )ENGINE=InnoDB デフォルト文字セット=utf8; 3. ACLルールの挿入 - ACLルール ヒント: !!! 以下の例に従って直接設定しないでください。まず ACL ルールを確認し、自分の状況に応じて設定してください。 `mqtt_acl` (`id`, `allow`, `ipaddr`, `username`, `clientid`, `access`, `topic`) の値を挿入します (1,1,NULL,'$すべて',NULL,2,'#'), (2,0,NULL,'$all',NULL,1,'$SYS/#'), (3,0,NULL,'$all',NULL,1,'等しい#'), (5,1,'127.0.0.1',NULL,NULL,2,'$SYS/#'), (6,1,'127.0.0.1',NULL,NULL,2,'#'), (7,1,NULL,'ダッシュボード',NULL,1,'$SYS/#'); 4. ユーザーを挿入します。今後、すべてのサブスクライブおよびパブリッシュクライアントはユーザー検証に合格する必要があります (sha256 値はご自身で変換してください) # スーパー管理者を設定できます (スーパー管理者は ACL ルールに関係なく、すべてのトピックをサブスクライブしてプッシュする権限を持ちます) mqtt_user (`username`, `password`) に値 ('admin', '03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4') を挿入します。 mqtt_user を更新し、is_superuser=1 を設定します。ここで、id はスーパー管理者 ID です。 ps: auth.mysql.password_hash (デフォルトは sha256) に注意してください。sha256 の場合は、新しいユーザーを追加するときに暗号化された値を手動で渡す必要があります。プレーンの場合は、暗号化する必要がなく、プレーンテキストで保存されます。 5. emqのmysql設定ファイルを変更する vi /opt/emqttd/etc/plugins/emq_auth_mysql.conf auth.mysql.server = yourmysql-IP:3306 auth.mysql.ユーザー名 = ルート auth.mysql.パスワード = xxxxxxxx auth.mysql.データベース = emq 6. emqを再起動する /opt/emqttd/bin/emqx 停止 /opt/emqttd/bin/emqx スタート /opt/emqttd/bin/emqttd_ctl plugins load emq_auth_mysql #mysql認証プラグインを開く
ルール テーブル フィールドの説明:
%u: ユーザー名 %c:クライアントID 例 -- すべてのユーザーがシステムトピックをサブスクライブすることはできません INSERT INTO mqtt_acl (allow, ipaddr, username, clientid, access, topic) VALUES (0, NULL, '$all', NULL, 1, '$SYS/#'); -- 10.59.1.100 上のクライアントがシステム トピックをサブスクライブできるようにします INSERT INTO mqtt_acl (allow, ipaddr, username, clientid, access, topic) VALUES (1, '10.59.1.100', NULL, NULL, 1, '$SYS/#'); -- クライアントが /smarthome/+/temperature トピックをサブスクライブすることを禁止します INSERT INTO mqtt_acl (allow, ipaddr, username, clientid, access, topic) VALUES (0, NULL, NULL, NULL, 1, '/smarthome/+/temperature'); -- クライアントが独自のクライアント ID を含む /smarthome/${clientid}/temperature トピックをサブスクライブできるようにします INSERT INTO mqtt_acl (allow, ipaddr, username, clientid, access, topic) VALUES (1, NULL, NULL, NULL, 1, '/smarthome/%c/temperature'); Docker を使って MQTT サーバーを構築する方法についてはこれで終わりです。Docker MQTT サーバーの詳細については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: .html、.htm、.shtml、.shtm の違いと関連性について簡単に説明します。
JavaとMysql 8.0.18バージョンの接続方法については、参考までに具体的な内容は以下のとお...
lsof (開いているファイルのリスト) は、プロセスによって開かれたファイルを表示するツールです。...
必要:ハードコードされたデータの代わりに、セレクター内のオプション値の動的な表示を実装します。私のロ...
MyISAM ストレージエンジンMyISAM は ISAM ストレージ エンジンに基づいており、それ...
雇用主から MySQL クエリ条件でインデックスが使用されるかどうかを尋ねられた場合、どのように答え...
目次概要コードの実装要約する概要アダプタ パターンは、デザイン パターンの動作パターンのパターンです...
この記事では主に、高さが不明な垂直方向の中央揃えを CSS で実装する方法を紹介し、皆さんと共有しま...
シェル スクリプト言語は、すべてのプログラミング言語の中で最も単純な言語であるため、資格のある Li...
目次前面に書かれた1. Ngixnイメージの作成2. Java Web (Tomcat) アプリケー...
この記事の例では、雨滴効果を実現するためのキャンバスの具体的なコードを参考までに共有しています。具体...
SQL クエリ ステートメントの実行順序は次のとおりです。 (7)選択 (8) DISTINCT &...
目次必要:ドライブ:アイデア:成し遂げる:個人的には、実際の開発ではストアド プロシージャの使用はお...
1. 内閣府マスターノードを監視することで、他のスレーブノードへの自動フェイルオーバーを実現できます...
nohup コマンド: プロセスを実行しており、アカウントからログアウトしてもプロセスが終了しないと...
1. リバースプロキシの例1 1. 効果を達成する(1)ブラウザを開き、www.123.comと入力...