Laravelチュートリアル

チュートリアル 4-MySQLの設定とアップデート

ConoHaのLaravelテンプレートイメージを使ってアプリ開発を行うチュートリアルをやっています。

ConoHa

今回は、MySQLの設定です。

MySQL(MariaDB)の確認

ターミナルから一般ユーザー(nakachon)でログイン。

/var/wwwフォルダに移動

Www  ssh nakachon 150 95 154 147  115×24 2019 10 22 14 13 00

$ mysql -u root -p

MySQLにログイン。

Www  ssh nakachon 150 95 154 147  115×24 2019 10 22 14 13 49

>show databases;

データベースを確認すると最初からtestというデータベースがあるようです。

Www  ssh nakachon 150 95 154 147  115×24 2019 10 22 14 14 43

> use test;

testというDBを選択

> show tables;

testにどんなtableがあるか確認したところ、まだ空っぽのようです。なので、LaravelでもこのtableというDBを使うことにします。

Laravel .envを編集してデータベースを設定

2019 10 22 14 17 03

Laravelの.envファイルを編集して、DB_DATABASE、DB_USERNAME、DB_PASSWORDを編集。

ターミナルから

ターミナルでSSHログイン。/var/www/html/laravelのフォルダに移動。

データベーステーブルのマイグレーションファイルを生成します。

$ php artisan make:migration create_samples_table –create=samples

2019 10 22 14 28 20

VS codeでdatabases/migrationsのフォルダにmigrationファイルができました。

$ php artisan migrate

マイグレーションを実行します。

Laravel  ssh nakachon 150 95 154 147  97×24 2019 10 22 14 30 47

エラーが発生しました。ただ、Migration table created successfullyと表示されているので、DBのテーブルは作成されたようです。

ターミナルから、まずDBを確認します。

Laravel  ssh nakachon 150 95 154 147  97×24 2019 10 22 14 33 00

testにあるtableを確認したところ、migrationsとusersという2つのテーブルが作成されていました。mysqlとの接続はうまくいったようです。

先程のエラーメッセージを確認します。

Syntax error or access violation: 1071 Specified key was too long

検索したところ下記のサイトを発見。

Laravel5.4以上、MySQL5.7.7未満 でusersテーブルのマイグレーションを実行すると Syntax error が発生する – Qiita

曰く、Laravel5.4以上、MySQL5.7.7未満でphp artisan migrateすると発生するエラーで、解決方法はMySQLのバージョンを最新にするのがベストとのこと。

Laravel  ssh nakachon 150 95 154 147  97×24 2019 10 22 14 38 03

上記Qiitaの方も古い備忘録と書いていますが、ConoHaのLaravelイメージではMySQL(MariaDB)のバージョンが5.5.60なのでこの問題が発生しているっぽいです。

なので、MariaDBのアップデートが必要のようです。

* ConoHa運営さん、ぜひ、LaravelテンプレートのMariaDBもアップデートお願いします!

ConoHa LaravelテンプレートのMariaDBをアップデートする

MariaDBのアップデート方法について検索したところ、下記のサイトを発見。

yumでmysql(maria DB)を最新安定バージョンにアップデートする(Cent OS7) – Qiita

MariaDBレポジトリ情報の生成を下記のサイトからできる様子。

MariaDB – Setting up MariaDB Repositories – MariaDB

MariaDB  Setting up MariaDB Repositories  MariaDB 2019 10 22 14 55 14

でも、CentOSのバージョンとアーキテクチャを確認する必要があるようです。

再びターミナルにもどり以下のコマンドで確認。

Laravel  ssh nakachon 150 95 154 147  66×24 2019 10 22 14 56 42

結果、CentOS 7.6 x86_64だということがわかりました。

MariaDB  Setting up MariaDB Repositories  MariaDB 2019 10 22 14 57 59

これでレポジトリ情報が表示されます。

/etc/yum.repos.d/MariaDB.repoを確認。なければ新規作成

ここからはrootのほうがよさそうなので、suでrootになります。

$ vim /etc/yum.repos.d/MariaDB.repo

このレポジトリはなかったので新たに作成。先程のrepository generatorのサイトで表示された情報をコピペして保存。

Laravel  ssh nakachon 150 95 154 147  105×19 2019 10 22 15 03 51

$ systemctl stop mariadb
mariadbを停止

$ systemctl status mariadb
ステータスを確認しました。

$ yum update MariaDB-server MariaDB-client
にて、アップデート。

[root@150-95-154-147 laravel]# yum update MariaDB-server MariaDB-client
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
epel/x86_64/metalink                                                              | 7.2 kB  00:00:00     
epel-debuginfo/x86_64/metalink                                                    | 7.3 kB  00:00:00     
epel-source/x86_64/metalink                                                       | 7.1 kB  00:00:00     
 * base: ftp.iij.ad.jp
 * epel: ftp.riken.jp
 * epel-debuginfo: ftp.riken.jp
 * epel-source: ftp.riken.jp
 * extras: ftp.iij.ad.jp
 * remi-safe: ftp.riken.jp
 * updates: ftp.iij.ad.jp
base                                                                              | 3.6 kB  00:00:00     
epel                                                                              | 5.3 kB  00:00:00     
epel-debuginfo                                                                    | 3.0 kB  00:00:00     
epel-source                                                                       | 4.1 kB  00:00:00     
extras                                                                            | 2.9 kB  00:00:00     
mariadb                                                                           | 2.9 kB  00:00:00     
remi-safe                                                                         | 3.0 kB  00:00:00     
updates                                                                           | 2.9 kB  00:00:00     
(1/8): epel/x86_64/updateinfo                                                     | 1.0 MB  00:00:00     
(2/8): epel/x86_64/primary_db                                                     | 6.9 MB  00:00:00     
(3/8): epel-source/x86_64/updateinfo                                              | 1.0 MB  00:00:00     
(4/8): epel-debuginfo/x86_64/primary_db                                           | 905 kB  00:00:00     
(5/8): epel-source/x86_64/primary_db                                              | 2.4 MB  00:00:00     
(6/8): remi-safe/primary_db                                                       | 1.6 MB  00:00:00     
(7/8): updates/7/x86_64/primary_db                                                | 2.8 MB  00:00:00     
(8/8): mariadb/primary_db                                                         |  58 kB  00:00:01     
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ MariaDB-client.x86_64 0:10.4.8-1.el7.centos を 非推奨
--> 依存性の処理をしています: MariaDB-common のパッケージ: MariaDB-client-10.4.8-1.el7.centos.x86_64
---> パッケージ MariaDB-server.x86_64 0:10.4.8-1.el7.centos を 非推奨
--> 依存性の処理をしています: galera-4 のパッケージ: MariaDB-server-10.4.8-1.el7.centos.x86_64
---> パッケージ mariadb.x86_64 1:5.5.60-1.el7_5 を 不要
---> パッケージ mariadb-server.x86_64 1:5.5.60-1.el7_5 を 不要
--> トランザクションの確認を実行しています。
---> パッケージ MariaDB-common.x86_64 0:10.4.8-1.el7.centos を インストール
--> 依存性の処理をしています: MariaDB-compat のパッケージ: MariaDB-common-10.4.8-1.el7.centos.x86_64
---> パッケージ galera-4.x86_64 0:26.4.2-1.rhel7.el7.centos を インストール
--> 依存性の処理をしています: libboost_program_options.so.1.53.0()(64bit) のパッケージ: galera-4-26.4.2-1.rhel7.el7.centos.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ MariaDB-compat.x86_64 0:10.4.8-1.el7.centos を 非推奨
---> パッケージ boost-program-options.x86_64 0:1.53.0-27.el7 を インストール
---> パッケージ mariadb-libs.x86_64 1:5.5.60-1.el7_5 を 不要
--> 依存性の処理をしています: mariadb-libs(x86-64) = 1:5.5.60-1.el7_5 のパッケージ: 1:mariadb-devel-5.5.60-1.el7_5.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ MariaDB-devel.x86_64 0:10.4.8-1.el7.centos を 非推奨
---> パッケージ mariadb-devel.x86_64 1:5.5.60-1.el7_5 を 不要
--> 依存性解決を終了しました。

依存性を解決しました

=========================================================================================================
 Package                       アーキテクチャー
                                              バージョン                           リポジトリー     容量
=========================================================================================================
インストール中:
 MariaDB-client                x86_64         10.4.8-1.el7.centos                  mariadb          12 M
     mariadb.x86_64 1:5.5.60-1.el7_5 を入れ替えます
 MariaDB-compat                x86_64         10.4.8-1.el7.centos                  mariadb         2.8 M
     mariadb-libs.x86_64 1:5.5.60-1.el7_5 を入れ替えます
 MariaDB-devel                 x86_64         10.4.8-1.el7.centos                  mariadb         7.5 M
     mariadb-devel.x86_64 1:5.5.60-1.el7_5 を入れ替えます
 MariaDB-server                x86_64         10.4.8-1.el7.centos                  mariadb          26 M
     mariadb-server.x86_64 1:5.5.60-1.el7_5 を入れ替えます
依存性関連でのインストールをします:
 MariaDB-common                x86_64         10.4.8-1.el7.centos                  mariadb          81 k
 boost-program-options         x86_64         1.53.0-27.el7                        base            156 k
 galera-4                      x86_64         26.4.2-1.rhel7.el7.centos            mariadb         9.4 M

トランザクションの要約
=========================================================================================================
インストール  4 パッケージ (+3 個の依存関係のパッケージ)

総ダウンロード容量: 57 M
Is this ok [y/d/N]: y
Downloading packages:
警告: /var/cache/yum/x86_64/7/mariadb/packages/MariaDB-common-10.4.8-1.el7.centos.x86_64.rpm: ヘッダー V4 DSA/SHA1 Signature、鍵 ID 1bb943db: NOKEY
MariaDB-common-10.4.8-1.el7.centos.x86_64.rpm の公開鍵がインストールされていません
(1/7): MariaDB-common-10.4.8-1.el7.centos.x86_64.rpm                              |  81 kB  00:00:01     
(2/7): MariaDB-compat-10.4.8-1.el7.centos.x86_64.rpm                              | 2.8 MB  00:00:04     
(3/7): MariaDB-client-10.4.8-1.el7.centos.x86_64.rpm                              |  12 MB  00:00:07     
(4/7): MariaDB-devel-10.4.8-1.el7.centos.x86_64.rpm                               | 7.5 MB  00:00:02     
(5/7): boost-program-options-1.53.0-27.el7.x86_64.rpm                             | 156 kB  00:00:00     
(6/7): galera-4-26.4.2-1.rhel7.el7.centos.x86_64.rpm                              | 9.4 MB  00:00:01     
(7/7): MariaDB-server-10.4.8-1.el7.centos.x86_64.rpm                              |  26 MB  00:00:05     
---------------------------------------------------------------------------------------------------------
合計                                                                     4.4 MB/s |  57 MB  00:00:12     
https://yum.mariadb.org/RPM-GPG-KEY-MariaDB から鍵を取得中です。
Importing GPG key 0x1BB943DB:
 Userid     : "MariaDB Package Signing Key <package-signing-key@mariadb.org>"
 Fingerprint: 1993 69e5 404b d5fc 7d2f e43b cbcb 082a 1bb9 43db
 From       : https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
上記の処理を行います。よろしいでしょうか? [y/N]y
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : MariaDB-compat-10.4.8-1.el7.centos.x86_64                               1/11 
  インストール中          : MariaDB-common-10.4.8-1.el7.centos.x86_64                               2/11 
  インストール中          : MariaDB-client-10.4.8-1.el7.centos.x86_64                               3/11 
  インストール中          : boost-program-options-1.53.0-27.el7.x86_64                              4/11 
  インストール中          : galera-4-26.4.2-1.rhel7.el7.centos.x86_64                               5/11 
  インストール中          : MariaDB-server-10.4.8-1.el7.centos.x86_64                               6/11 
  インストール中          : MariaDB-devel-10.4.8-1.el7.centos.x86_64                                7/11 
  削除中                  : 1:mariadb-devel-5.5.60-1.el7_5.x86_64                                   8/11 
  削除中                  : 1:mariadb-server-5.5.60-1.el7_5.x86_64                                  9/11 
warning: /var/log/mariadb/mariadb.log saved as /var/log/mariadb/mariadb.log.rpmsave
  削除中                  : 1:mariadb-5.5.60-1.el7_5.x86_64                                        10/11 
  削除中                  : 1:mariadb-libs-5.5.60-1.el7_5.x86_64                                   11/11 
  検証中                  : MariaDB-common-10.4.8-1.el7.centos.x86_64                               1/11 
  検証中                  : galera-4-26.4.2-1.rhel7.el7.centos.x86_64                               2/11 
  検証中                  : MariaDB-client-10.4.8-1.el7.centos.x86_64                               3/11 
  検証中                  : MariaDB-devel-10.4.8-1.el7.centos.x86_64                                4/11 
  検証中                  : MariaDB-compat-10.4.8-1.el7.centos.x86_64                               5/11 
  検証中                  : MariaDB-server-10.4.8-1.el7.centos.x86_64                               6/11 
  検証中                  : boost-program-options-1.53.0-27.el7.x86_64                              7/11 
  検証中                  : 1:mariadb-server-5.5.60-1.el7_5.x86_64                                  8/11 
  検証中                  : 1:mariadb-libs-5.5.60-1.el7_5.x86_64                                    9/11 
  検証中                  : 1:mariadb-5.5.60-1.el7_5.x86_64                                        10/11 
  検証中                  : 1:mariadb-devel-5.5.60-1.el7_5.x86_64                                  11/11 

インストール:
  MariaDB-client.x86_64 0:10.4.8-1.el7.centos         MariaDB-compat.x86_64 0:10.4.8-1.el7.centos        
  MariaDB-devel.x86_64 0:10.4.8-1.el7.centos          MariaDB-server.x86_64 0:10.4.8-1.el7.centos        

依存性関連をインストールしました:
  MariaDB-common.x86_64 0:10.4.8-1.el7.centos        boost-program-options.x86_64 0:1.53.0-27.el7       
  galera-4.x86_64 0:26.4.2-1.rhel7.el7.centos       

置換:
  mariadb.x86_64 1:5.5.60-1.el7_5                    mariadb-devel.x86_64 1:5.5.60-1.el7_5               
  mariadb-libs.x86_64 1:5.5.60-1.el7_5               mariadb-server.x86_64 1:5.5.60-1.el7_5              

完了しました!

無事にインストールできたようです。

ConoHaの管理画面からサーバーを再起動します。

MariaDBに接続できるか確認

再度、sshで接続して、

$ mysql

とターミナルで打ったところ

Nakachon  nakachon 150 95 154 147 ~  ssh nakachon 150 95 154 147  93×59 2019 10 22 15 11 07

エラーが発生。

検索して下記のサイトを発見。

mysqlが起動できない(Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)) – Qiita

書かれているとおりまずは

$ sudo touch /tmp/mysql.sock
ファイルを作成

$ sudo mysql.server restart
mysqlを再起動しようとしたところ

Nakachon  nakachon 150 95 154 147 ~  ssh nakachon 150 95 154 147  93×59 2019 10 22 15 17 35

mysql.serverではないようです。

mariadbの起動方法をググると

MariaDBのインストールと起動 – Qiita

こちらでかかれているとおり、

$ systemctl start mariadb

Nakachon  nakachon 150 95 154 147 ~  ssh nakachon 150 95 154 147  93×59 2019 10 22 15 19 20

無事に起動しました。

MariaDBのバージョンも10.4.8となっています。

MariaDBの中身を確認

前回のDBがあるか確認します。

Nakachon  nakachon 150 95 154 147 ~  ssh nakachon 150 95 154 147  93×59 2019 10 22 15 22 03

先程作成したtableがありました。

php artisan migrate:refresh

前回マイグレートしたときのusersテーブルは残っているものの、

$ php artisan migrate:refresh

で、テーブルの再構築もしてくれると思い、ターミナルから実行したところ、

Laravel  ssh nakachon 150 95 154 147  148×59 2019 10 22 15 30 14

usersテーブルがすでにあることでエラーになっている様子。これ、テーブルの削除はしてくれなかったかな?

とりあえず、 mysqlからusersテーブルを削除して、

$ php artisan migrate
を実行。

Laravel  ssh nakachon 150 95 154 147  148×59 2019 10 22 15 39 33

無事にtableが作成されました。

まとめ

今回、MySQLをアップデートし接続を確認できたので、これでようやくLaravelのアプリケーション(チュートリアル)の実装ができる様になりました。

次回からいよいよLaravelのコードを書いていきます。