#はじめに
- Laravel5.5 開発環境をDockerで構築するの続き。
- migrationして、テーブルが作成されるまでを検証します。
#事前準備
コンテナを起動する
laradock$ docker-compose up -d php-fpm nginx mysql workspace
laradock_mysql_1 is up-to-date
laradock_workspace_1 is up-to-date
laradock_docker-in-docker_1 is up-to-date
laradock_php-fpm_1 is up-to-date
laradock_nginx_1 is up-to-date
コンテナ立ち上がってましたね
コンテナ(ワークスペース)に入る
laradoc$ docker exec -it laradock_workspace_1 /bin/bash
別タブでMySQLコンテナに入る
laradoc$ docker exec -it laradock_mysql_1 /bin/bash
MySQLにログイン
root@b17755e83e64:/var/www# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.12 MySQL Community Server - GPL
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
バージョン8系なんだと今気づく
test_dbを作成
mysql> create database test_db;
Query OK, 1 row affected (0.09 sec)
#テーブルを作成する
コンテナ(ワークスペース)にて、以下を実施する。
migrationファイルを作成する
root@1058e6da0b91:/var/www# php artisan make:migration create_test_db_table
migrationを実行する
root@b17755e83e64:/var/www# php artisan migrate
###こんなエラーが出ました
SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client
PDO::__construct(): The server requested authentication method unknown to the client [caching_sha2_password]
なるほど
ユーザーの認証方法が変わったのか
Before:認証方式をチェックする
mysql> SELECT user,host,plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| user | host | plugin |
+------------------+-----------+-----------------------+
| default | % | caching_sha2_password |
| 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 |
+------------------+-----------+-----------------------+
6 rows in set (0.00 sec)
defaultとrootの認証方式を変更する
mysql> ALTER USER 'default'@'%' IDENTIFIED WITH mysql_native_password BY 'secret';`
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'secret';
After:認証方式をチェックする
mysql> SELECT user,host,plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| user | host | plugin |
+------------------+-----------+-----------------------+
| default | % | mysql_native_password |
| root | % | mysql_native_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session | localhost | caching_sha2_password |
| mysql.sys | localhost | caching_sha2_password |
| root | localhost | caching_sha2_password |
+------------------+-----------+-----------------------+
6 rows in set (0.00 sec)
変わってますね
うん。一旦解決。改めて、、、
###migrationファイルを作成する
root@1058e6da0b91:/var/www# php artisan make:migration create_test_db_table
Created Migration: 2018_08_21_103343_create_sample_table
なんか命名規則あったような・・・
laravelプロジェクト配下の.env
を修正
以下のように変更。
root@b17755e83e64:/var/www# vim .env
DB_CONNECTION=mysql:relaxed:
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=test_db
DB_USERNAME=root
DB_PASSWORD=secret
###migrationを実行する
root@1058e6da0b91:/var/www# php artisan migrate
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated: 2014_10_12_100000_create_password_resets_table
Migrating: 2018_08_21_152517_create_test_db_table
Migrated: 2018_08_21_152517_create_test_db_table
お。良さげ!!
テーブルができたかを確認する
mysql> use test_db;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql>
mysql>
mysql>
mysql> show tables;
+-------------------+
| Tables_in_test_db |
+-------------------+
| migrations |
| password_resets |
| test_db |
| users |
+-------------------+
4 rows in set (0.00 sec)
おしまい
ちなみに現時点で、Sequel proはMySQL8系に対応してなかったです