LoginSignup
4
0

More than 5 years have passed since last update.

MariaDBへ接続する時にPerl or PHPからアクセスできなかった事の解決

Last updated at Posted at 2017-10-31

Debian9などはMariaDBがインストールされるので、これを機にまじめに設定してみたらPerl or PHPでアクセスできないので調べてみました。
結果的には「UNIX_SOCKET Authentication Plugin」がデフォルトで有効になっているため、rootではもちろん、他のアカウントでも手順を踏まないとアクセスできないってことでしたねー。

参考)https://jyn.jp/ubuntu-16-04-mariadb-password-bug/#MariaDB

今回はUNIX_SOCKETを使用せずに通常のパスワード認証でアカウントを作成したので、コンソールよりmariadbにログインし、おもむろに下記を実行します。
ユーザー名は揃える必要があるので、Apacheの実行権限が「hogehoge」とした場合、下記のコマンドになります。

CREATE USER hogehoge@localhost IDENTIFIED BY 'passwd';

作成したアカウントに対して、unix_socketが付与されていないことを確認します。

select user,host,password,plugin from mysql.user; 
+------------+-----------+-------------------------------------------+-------------+
| user       | host      | password                                  | plugin      |
+------------+-----------+-------------------------------------------+-------------+
| root       | localhost | *FDLK+LSDKFLD+FDMFDSFDSFKDSLFKDLSFKDL+FKD | unix_socket |
| hogehoge   | localhost | *dsadsdsdsdsdsadsadKSDJSIDASDLSDLSDSDSADJ |             |
+------------+-----------+-------------------------------------------+-------------+

この状態だとデータベースの作成権限がないため、データベースが無いと相変わらずaccess deniedなので、データベースを作成する権限を付与します。

grant all on *.* to 'hogehoge'@'localhost';

セキュリティー上、より強固になったような気がします!(all on *.* ですけど)

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0