プログラミングは面白い

プログラミングの事を中心に色々書いていきます

LaravelでMysqlを設定する

ちょっとPHPだけだと飽きちゃうのでLaravelにも挑戦中。
メインはrailsにするつもりなのであくまで他のフレームワークの視察程度です。

例の如く、データベースの設定で少し躓きました。
あ、でも少しだったので多少は成長したようです。

以下、軽く注意点を書いておきます。
まず、mysqlのバージョン8から認証方式が変わったようです。
既存の認証方式が何だったのか私にはわからないので、どのように変わったかは謎。
まぁとにかくこの認証方式のせいでデータベースのマイグレーションがうまく行きません。

まずはmysqlのユーザーのチェックをしましょう。
mysqlにログインして下記コマンドを入力して中身を確認。

mysql> SELECT user, host, plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| user             | host      | plugin                |
+------------------+-----------+-----------------------+
| mysql.infoschema | localhost | mysql_native_password |
| mysql.session    | localhost | mysql_native_password |
| mysql.sys        | localhost | mysql_native_password |
| root             | localhost | caching_sha2_password |
+------------------+-----------+-----------------------+

私の場合はrootユーザーがcaching_sha2_passwordになっています。
こいつが悪さをしていますので、これを他のuserと同じくmysql_native_passwordにかえます。
変更方法は下記コマンド。

> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'パスを入力';

これで完了です。
rootとlocalhost、最後のパスは自分の設定に合わせて適宜変更してください。

また、今後新規でユーザーを作った場合にデフォルトでmysql_native_passwordになるようにしておきましょう。

$ mysql --help | grep my.cnf

これでmy.cnfファイルの場所を探して、下記を追記

[mysqld]
default-authentication-plugin = mysql_native_password

これでマイグレーションすればバッチリ成功すると思われます。

windows環境でこの設定するのにめっちゃ苦しんだ覚えがあります。
確かブログの記事にもした気がしますがまぁまた書いておきましょう。

そういえば、railsのデプロイは適当に中身がないアプリで試してみることにします。
これなら何かあってもノーダメージだし、何度でも簡単にやり直せますからね。
PHPが落ち着いたらいざ挑戦。