ConoHaのLaravelテンプレートイメージを使ってアプリ開発を行うチュートリアルをやっています。
今回は、MySQLの設定です。
MySQL(MariaDB)の確認
ターミナルから一般ユーザー(nakachon)でログイン。
/var/wwwフォルダに移動
$ mysql -u root -p
MySQLにログイン。
>show databases;
データベースを確認すると最初からtestというデータベースがあるようです。
> use test;
testというDBを選択
> show tables;
testにどんなtableがあるか確認したところ、まだ空っぽのようです。なので、LaravelでもこのtableというDBを使うことにします。
Laravel .envを編集してデータベースを設定
Laravelの.envファイルを編集して、DB_DATABASE、DB_USERNAME、DB_PASSWORDを編集。
ターミナルから
ターミナルでSSHログイン。/var/www/html/laravelのフォルダに移動。
データベーステーブルのマイグレーションファイルを生成します。
$ php artisan make:migration create_samples_table –create=samples
(-は2つです。)
VS codeでdatabases/migrationsのフォルダにmigrationファイルができました。
$ php artisan migrate
マイグレーションを実行します。
エラーが発生しました。ただ、Migration table created successfullyと表示されているので、DBのテーブルは作成されたようです。
ターミナルから、まずDBを確認します。
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のバージョンを最新にするのがベストとのこと。
上記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
でも、CentOSのバージョンとアーキテクチャを確認する必要があるようです。
再びターミナルにもどり以下のコマンドで確認。
結果、CentOS 7.6 x86_64だということがわかりました。
これでレポジトリ情報が表示されます。
/etc/yum.repos.d/MariaDB.repoを確認。なければ新規作成
ここからはrootのほうがよさそうなので、suでrootになります。
$ vim /etc/yum.repos.d/MariaDB.repo
このレポジトリはなかったので新たに作成。先程のrepository generatorのサイトで表示された情報をコピペして保存。
$ 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
とターミナルで打ったところ
エラーが発生。
検索して下記のサイトを発見。
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を再起動しようとしたところ
mysql.serverではないようです。
mariadbの起動方法をググると
こちらでかかれているとおり、
$ systemctl start mariadb
無事に起動しました。
MariaDBのバージョンも10.4.8となっています。
MariaDBの中身を確認
前回のDBがあるか確認します。
先程作成したtableがありました。
php artisan migrate:refresh
前回マイグレートしたときのusersテーブルは残っているものの、
$ php artisan migrate:refresh
で、テーブルの再構築もしてくれると思い、ターミナルから実行したところ、
usersテーブルがすでにあることでエラーになっている様子。これ、テーブルの削除はしてくれなかったかな?
とりあえず、 mysqlからusersテーブルを削除して、
$ php artisan migrate
を実行。
無事にtableが作成されました。
まとめ
今回、MySQLをアップデートし接続を確認できたので、これでようやくLaravelのアプリケーション(チュートリアル)の実装ができる様になりました。
次回からいよいよLaravelのコードを書いていきます。