IoTに挑戦

【IoTに挑戦】新たな問題に直面、テーブルのアクセス権が発生!

データベーステーブル

おはようございます。じぇいかわさきです。

スポンサーリンク

 

やっとデータベースのテーブルを作り直して、そえではと思い今まで作ったデータをインポートしようと挑戦しました。

 

しかし、新たな問題が発生!テーブルのアクセス権が無いとのエラーとなり先に進まず。

 

データベーステーブル

 

データをインポートしてみる

DHT11を使用して採取した温湿度データは、CSVファイルとして保存されている。

 

このデータを今回作ったデータベースのテーブルにインポートしてあげればよいことになる。

 

今まで、過去の記憶をよみがえらせてCSVファイルのデータをテーブルに読み込ませるのは、INSERT文を使うのだとずっと思っていた。

 

しかし、調べていくとMariaDBではINSERT文ではなく、LOAD文を使用してデータをインポートするみたいだ。

 

ローカルにファイルされているデータを指定し、インポートをしてみる。

 

load local data infile ‘/home/pi/rasptemp/temp_humd.csv’ into table ‘temphumd’ fields terminated by ‘,’ optionally enclosed by ‘”‘ ;

 

最初は’temphumd’の右側にエラーが有ると表示された。

 

アクセスエラー

 

チェックしてみると、MariaDBの最新版ではテーブルの指定に”で囲うことはしなくて良いらしい。

load local data infile ‘/home/pi/rasptemp/temp_humd.csv’ into table temphumd fields terminated by ‘,’ optionally enclosed by ‘”‘ ;

上記に書き換えて、再度実行させてみると、今度は別のエラーになった。

 

今度のエラーはERROR 1045と表示され、テーブルのアクセス権に関わる問題みたいだ。

 

raspと言うユーザーではなくrootだったので、もう一度raspと言うユーザーでログインしなおして、同じことをやってみたが結果は同じだった

 

 

 

ERROR 1045とは

いきなりエラーコード1045と表示されても、実際はどんな事なのかさっぱり分からない。

 

とりあえずはAccess deniedなので、アクセスは拒否されたと言うことなんだろうと思う。

 

つまり、今回作ったテーブルに対して、データを入れようとしてアクセスると、アクセス権が無いと拒否されてしまうと言うことだ。

 

エラー内容をもう少し詳しくチェックしていこうと、ネットを調べてみた。

 

■エラーコード:1045

■SQLSTATE:28000

■エラーメッセージ例:
Access denied for user ‘ユーザ名’@’ホスト名’ (using password: [YES/NO])

■エラーの原因:
(YESの場合)権限などのユーザ設定が間違えている。
(NOの場合)ログイン時にパスワードを入力していない、または、入力したパスワードが間違えている。

■エラーへの対処法:
(YESの場合)権限の設定が問題ないか確認する。それでもできない場合は、ユーザを一度削除して再度作成してみる。
(NOの場合)ログイン時にオプション「-p」を付け、パスワードを入力する。その上でエラーになる場合、パスワードが間違えていないか確認する。

 

今回の対象は太字にした部分に当たるよね。

 

一番簡単なのは、一旦raspと言うユーザーを削除して、もう一度設定するのが良いみたいだ。

[ads]

 

ここでもつまずいた。

drop user rasp ;

 

上記コマンドを使用して、ユーザーを一旦削除する。ここまでは問題なかった。

 

しかし、再度ユーザーを作成しようと下記コマンドを入れてもエラーとなってしまう。

create user rasp@’%’ IDENTIFIED by ‘rasp’;

記述方法を変えて、以下でも試したみた。

create user ‘rasp’@’%’ IDENTIFIED by ‘rasp’;

これでもエラー。

 

結局、マニュアルを読んでいくと一度作ったことが有るユーザーに対しては、以下のコマンドになるようだ。

create user or replace user ‘rasp’@’%’ identified by ‘rasp’ ;

 

 

ユーザー再設定

 

これでユーザーが再構築できたので、もう一度権限を以下のコマンドで付加した。

grant all privilages on iotada.* to ‘raso’@’%’;

 

そして、反映されるようにおまじないの下記コマンドを実行

flush privileges;

 

これでOKになったはず。

 

同じようにデータの流し込みのコマンドを実行すると同じで変わらず!

 

 

まとめ

結局のところ、ユーザーの設定が悪いような気がするのだが、何が悪いのかが分からない。

 

ついに手詰まり状態に陥ってしまった。

 

まさかこんなところで躓いてしまうとは。今まで少し触ったことが有るMySQLと互換と言いながらも、かなり変わっているような気がするMariaDB。

 

もう少ししっかりと、内容を確認してから、もしくは単独である程度使用できるようになってからでないと、難しいのかもしれない。

 

ものすごく安易に考えていた自分がちょっと情けなくなった。MySQLを少しだけかじったことが有る事が、逆にあだになったのかもしれない。

 

と言う事で、ちょっとMariaDBについて調べたりする期間が必要なような気がする。

 

本企画は、ちょっと中断してしまうかもしれない状況に追い込まれた。

 

残念だが仕方がないかもね。

 

 

 

 

ABOUT ME
じぇいかわさき
進撃の社畜/弱小プロブロガー 本ブログは、還暦で定年の世代の筆者が、まだまだやれるという事を証明するために新たな事に挑戦した事を情報発信しているブログです。同世代の人達に対して、まだまだいろいろと頑張れる、第二の人生を楽しく生きていく為に現状維持は退化、失敗の反対は行動しないことを座右の銘とし、思い立ったことにチャレンジした記録です。また、せっかく稼いだ収益を騙し取られないように、毎日来る迷惑メールなどのネットリテラシーについても情報発信をしています。 このブログは ネットリテラシー ブログ 働くこと について書いており、第二の人生で頑張る同世代の心に刺さる記事を目指してます。人生100年、まだまだがんばれます。 >> Twitterをフォローする