LoginSignup
1
2

More than 3 years have passed since last update.

LaravelのMySQLデータベースをXAMPPからDockerに切り替え

Posted at

自分はこのやり方でできたという記録用です。私はXAMPPを使っていましたが、Dockerに切り替えたいと思います。
既にアプリの中身は完成している状態から始めます。

プロジェクトのターミナルでDocker imageをダウンロード

docker pull mysql

mysqlサーバーを立てる

docker run --name mysql-server -e MYSQL_ROOT_PASSWORD="admin" -d -p 53306:3306 mysql

mysqlへログイン

mysql -uroot -padmin -h 127.0.0.1 -P 53306

XAMPPで作成していたデータベースをDockerのmysqlでも作成します。
新しいデータベースをXAMPPのものと同じように作り変えます。

php artisan migrate:fresh

エラー

SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client (SQL: SHOW FULL TABLES WHERE table_type = 'BASE TABLE')

認証方式を変えます。

SELECT user, host, plugin FROM mysql.user;

//私の結果
+------------------+-----------+-----------------------+
| user             | host      | plugin                |
+------------------+-----------+-----------------------+
| root             | %         | caching_sha2_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session    | localhost | caching_sha2_password |
| mysql.sys        | localhost | caching_sha2_password |
| root             | localhost | caching_sha2_password |
+------------------+-----------+-----------------------+

私の場合rootの二つを変えました。

alter user 'root'@'%' identified with mysql_native_password by 'pass';
alter user 'root'@'localhost' identified with mysql_native_password by 'pass';

envファイルを書き換えます。

DB_CONNECTION=mysql
DB_HOST=localhost  //変更
DB_PORT=53306    //変更
DB_DATABASE=database_name  //自分が新しく作ったデータベース名
DB_USERNAME=root
DB_PASSWORD=pass  //先程のパスワード

ここまでできたらマイグレーションします。

php artisan migrate:fresh

php artisan serveと打つとデータベースにデータが入っていない状態で立ち上がると思います。シーダーファイルの中身を入れます。

php artisan db:seed

これでデータベースの移行が完了しました。

参考
https://tyablog.net/2017/06/10/docker-setup-mysql/
https://symfoware.blog.fc2.com/blog-entry-2160.html

1
2
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
1
2