PHP(Laravel) * MySQLで接続できない時の対応

インフラわからない



環境



CentOS: 7.6.1810
Apache: 2.4.6
PHP: 7.2.13
Laravel: 5.7
mysql: 5.7.24

WebサーバとDBサーバに分かれている(同一ネットワークに存在する)



You must reset your password using ALTER USER statement before executing this statement.



初期パスワードから変えていない。あるいはポリシーが満たない。
パスワードを変更する。あるいはポリシーを変更する。
http://swiftfe0.hatenablog.com/entry/2016/11/22/010631



is not allowed connect to this mysql server



mysqlだとデフォルトで外部からアクセスできないようになっている。
sshコネクションを張るか特定のアドレスを許可する(基本後者?)

GRANT ALL PRIVILEGES ON *.* TO root@"xxx.xxx165.17" IDENTIFIED BY 'password' WITH GRANT OPTION;

mysql> select user , host from mysql.user;
+---------------+---------------+
| user          | host          |
+---------------+---------------+
| root          | xxx.xxx.1x5.x7 |
| mysql.session | localhost     |
| mysql.sys     | localhost     |
| root          | localhost     |



select user , host from mysql.user;
でどのホストがどのユーザで接続できるのか確認できる。
passwordはポリシーに準拠する必要がある

https://qiita.com/m-shin/items/770c1c54a889bf060751



PHPプログラム実行時MySQLに接続できない is not allowed to connect to this MySQL server



[root@app-web app]# php artisan migrate
Illuminate\Database\QueryException : SQLSTATE[HY000] [1130] Host 'xx.2xx.xx5.xxx' is not allowed to connect to this MySQL server (SQL: select * from information_schema.tables where table_schema = webedi and table_name = migrations)

phpinfo()を出力するとPDOにMySQLがない。
CentOSで最新のPHPをインストールした時などに漏れる。

NG
yum install --enablerepo=remi,remi-php72 php php-devel php-mbstring php-pdo php-xml php-zip1

OK
yum install --enablerepo=remi,remi-php72 php php-devel php-mbstring php-pdo php-xml php-zip1 php-mysqlnd

php-mysqlnd を追加インストールする場合以下
yum install --enablerepo=remi,remi-php72 php-mysqlnd

phpのバージョンは合わせること。
特に再起動などは必要ない模様。

PDO driversにmysqlが追加されていればOK.



参考



https://mintaku-blog.net/mysql-pdoexception/
http://yosugi.hatenablog.jp/entry/2013/06/23/185240
https://gist.github.com/koudaiii/340527ca1e9042758aa5

2019年1月16日水曜日