前提・実現したいこと
環境:Windows10、XAMPP
PHPでデータをinsertしようとしたところ、PDOでのDBへの接続の時にエラーが出ました。
認証プラグインの変更をしたいのですが、シンタックスエラーが出て出来ないため、
シンタックスエラーが出る原因と解決法をご教授いただけると助かります。
前提として、パスワード・アカウント名・ホスト名・データベース名は合っています。
※DB接続部分のPHPコードは以下
php
1$dns = 'mysql:host=localhost;'; 2$dns .= 'dbname=mydb;'; 3$dns .= 'charset=utf8;'; 4//PDOでのDBへの接続 5$pdo = new PDO($dns,'user','pass');
####DB接続エラー内容
command
1SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client
####試したこと
①ユーザーの認証プラグインを確認
調べると、認証プラグインをmysql_native_passwordに設定すればよいことが分かったのでまずユーザーの認証プラグインを確認しようとしました。
command
1MariaDB [(none)]> select user,host,plugin from mysql.user; 2+------+-----------+--------+ 3| user | host | plugin | 4+------+-----------+--------+ 5| root | localhost | | 6| root | 111.1.1.1 | | 7| root | ::1 | | 8| | localhost | | 9| pma | localhost | | 10| user | localhost | | 11| abcd | localhost | | 12+------+-----------+--------+ 137 rows in set (0.00 sec)
ところがpluginの欄には何も表示されませんでした。
これはプラグインが設定されていないということでしょうか?全くわかりません…。
②ALTERで認証プラグインを変更
全くわからないので、とりあえずalterでMySQLの認証プラグインmysql_native_passwordに変えようとしましたが、シンタックスエラーと出ます。
command
1MariaDB [mysql]> alter user 'user'@'localhost' identified with mysql_native_password by 'pass'; 2ERROR 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 'user'@'localhost' identified with mysql_native_password by 'pass'' at line 1
文法は合っているはずなのですが、ここが通らず認証プラグインを変えることができません。
ここで質問したいことは
1.
alter...の文法は合っていますよね?なぜシンタックスエラーが出るんでしょうか…?
2.
pluginに何も表示されないというのは、設定されていないということでしょうか?
3.
こうなった場合の解決方法
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。