Node-RED

ラズパイのNode-REDのMariaDBでER_NOT_SUPPORTED_AUTH_MODEエラー

ラズパイでNode-REDの”node-red-node-mysql”プラグインを使おうとしたところ、”ER_NOT_SUPPORTED_AUTH_MODE”というエラーが標示され、うまくフローとDBを接続することができませんでした。

検索すると、同じ症状の報告と解決方法が見つかりますが、うまくいきません。

Node.jsでMySQL 8.0へ接続しようとする時に発生するエラー – Qiita

曰く、

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'

これをやろうとすると、ラズパイのmariaDBのコンソール画面では

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'USER `root`@`localhost'`IDENTIFIED WITH mysql_native_password BY `root`' at line 1

このようにエラーがでてうまくいきません。

ALTER USER `root`@`localhost` IDENTIFIED VIA mysql_native_password;

このようにやってもだめでした。

ユーザー追加とplugin

いろいろ調べて、root以外のユーザーを追加してから、

MariaDB [mydb]> select host, user , password,plugin  from mysql.user;

としたところ、

Nakachon  pi RevPi20548 ~  ssh pi 192 168 1 13  185×52 2020 08 02 12 23 04

pluginのところにunix_socketが標示されました。

MariaDBとunix_socketで検索し下記のサイトを発見。

Authentication Plugin – Unix Socket – MariaDB Knowledge Base

unix_socketのプラグインをdisableすればよさそうなのですが、うまくいかず。

いるかのボックス: Raspberry PiにMariaDBをインストールする

結局、新しいユーザーを追加したら解決

結果的には、新しく追加したユーザー “user1″にDBの権限を与えたら、あっさり解決しました。

grant all on `mydb`.* to `user1`;

ただ、ここにいたるため、シングルクォーテーションとバッククオテーションを間違え、かなりの時間を費やしてしましました。

最終的な解決方法

結局は、

1.新しいユーザーをユーザーを追加

 CREATE USER user1;

2.そのユーザーにDBに接続する権限を与える

grant all on `mydb`.* to `user1`;

ということで解決しました。

ABOUT ME
中畑 隆拓
スマートライト㈱ 代表取締役。DALIやKNX導入のコンサルティング・コンフィグレーション・機器の販売、AI-IoTを組み合わせたシステムの提案を行っています。