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のコードを書いていきます。