【CakePHP3】Vagrant + Virtualboxを使用したプロジェクト立ち上げまで解説!④

前回の続きで「4.MySQLのインストール」になります。

こんな内容で記事書いてます。

■バージョン
・CentOS: 7.2
・PHP: 7.2
・Apache: 2.4
・MySQL 5.7

1.Vagrant + Virtualbox のインストール & BOXファイルを使用してCentOS7のインスタンス立ち上げ
2.Apacheのインストール(Webサーバ)
3.PHPのインストール
4.MySQLのインストール
5.CakePHPのプロジェクト作成

まだ見ていない方は良かったら前の記事も見てみてください。
1.Vagrant + Virtualbox のインストール & BOXファイルを使用してCentOS7のインスタンス立ち上げ

2.Apacheのインストール(Webサーバ)

3.PHPのインストール

というわけで、前回PHPをインストールしたので次にMySQLをインストールしていきます。

①MySQLのインストール

MySQLはオープンソースのデータベースで、

企業でも非常によく使われています。

なのでこちらは自分でインストールできるようになっておくと

非常にいいと思います。

データベースはデータを管理するためのもので、

Webサイトを作成する上では、

なくてはならない存在です。(静的なページのみなら使う必要はないですが。。)

またフレームワークを使う場合は、必ずインストールをしないといけません。

今回インストールするのは、MySQLの5.7です。

こちらをインストールするには、パッケージを入れる必要があるので、

まず下記を実行します。

sudo rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

実行すると下記のように出てきます。

更新中 / インストール中...
   1:mysql57-community-release-el7-8  ################################# [100%]

これでパッケージの追加ができたので、

下記コマンドでMySQL5.7をインストールしましょう。

sudo yum install -y mysql-community-server

インストールが完了すると下記メッセージが出ます。

....
....
....

インストール中          : mysql-community-common-5.7.27-1.el7.x86_64                                                                                                                                  1/9 
  インストール中          : mysql-community-libs-5.7.27-1.el7.x86_64                                                                                                                                    2/9 
  インストール中          : mysql-community-libs-compat-5.7.27-1.el7.x86_64                                                                                                                             3/9 
  インストール中          : mysql-community-client-5.7.27-1.el7.x86_64                                                                                                                                  4/9 
  インストール中          : net-tools-2.0-0.24.20131004git.el7.x86_64                                                                                                                                   5/9 
  インストール中          : mysql-community-server-5.7.27-1.el7.x86_64                                                                                                                                  6/9 
  更新します              : 2:postfix-2.10.1-7.el7.x86_64                                                                                                                                               7/9 
  整理中                  : 2:postfix-2.10.1-6.el7.x86_64                                                                                                                                               8/9 
  削除中                  : 1:mariadb-libs-5.5.44-2.el7.centos.x86_64                                                                                                                                   9/9 
  検証中                  : mysql-community-libs-compat-5.7.27-1.el7.x86_64                                                                                                                             1/9 
  検証中                  : mysql-community-common-5.7.27-1.el7.x86_64                                                                                                                                  2/9 
  検証中                  : net-tools-2.0-0.24.20131004git.el7.x86_64                                                                                                                                   3/9 
  検証中                  : 2:postfix-2.10.1-7.el7.x86_64                                                                                                                                               4/9 
  検証中                  : mysql-community-server-5.7.27-1.el7.x86_64                                                                                                                                  5/9 
  検証中                  : mysql-community-client-5.7.27-1.el7.x86_64                                                                                                                                  6/9 
  検証中                  : mysql-community-libs-5.7.27-1.el7.x86_64                                                                                                                                    7/9 
  検証中                  : 1:mariadb-libs-5.5.44-2.el7.centos.x86_64                                                                                                                                   8/9 
  検証中                  : 2:postfix-2.10.1-6.el7.x86_64                                                                                                                                               9/9 

インストール:
  mysql-community-libs.x86_64 0:5.7.27-1.el7                      mysql-community-libs-compat.x86_64 0:5.7.27-1.el7                      mysql-community-server.x86_64 0:5.7.27-1.el7                     

依存性関連をインストールしました:
  mysql-community-client.x86_64 0:5.7.27-1.el7                        mysql-community-common.x86_64 0:5.7.27-1.el7                        net-tools.x86_64 0:2.0-0.24.20131004git.el7                       

依存性を更新しました:
  postfix.x86_64 2:2.10.1-7.el7                                                                                                                                                                             

置換:
  mariadb-libs.x86_64 1:5.5.44-2.el7.centos                                                                                                                                                                 

完了しました!

これでMySQLをインストールできました。

②MySQLの自動起動設定

ApacheやMySQLのプログラムは、ある設定をしてあげないと、

サーバーを落として、起動したときに、勝手に動いてくれません。

毎回起動してあげるのもいいですが、面倒ですよね。。

なので、サーバーを立ち上げた際に、勝手に起動してくれるように設定してあげます。

下記コマンドを実行してください。

sudo systemctl enable mysqld.service

こちらを実行してあげることで、自動的に起動するようになりますので、

こういうコマンドがあることも覚えておくといいでしょう。

③MySQLのrootユーザーのパスワード変更

確かMySQLの5.6ではパスワードなしで、

rootユーザーでログインできたのですが、

MySQL5.7からrootユーザーに初期パスワードが発行されるようになりました。

確認の仕方がちょっとわかりずらいので、

下記手順でrootのパスワードを変更してあげましょう。

まずインストールしたばかりでは、MySQLのプログラムが動いていないので、

動かしてあげましょう。

sudo systemctl start mysql

これで起動したので、下記コマンドでrootユーザーの初期パスワードを確認します。

sudo cat /var/log/mysqld.log | grep 'temporary password'

catコマンドでログファイル内を出力し、出力結果からgrepコマンドで、

「temporary password」にマッチする行を抜き出します

2019-07-21T13:30:45.712905Z 1 [Note] A temporary password is generated for root@localhost: +vQls#mDE8V0

こんな感じで1行抜き出されます。

パスワードに当たるのは「+vQls#mDE8V0」の部分です。

(今回僕のはこういうパスワードでした。)

初期パスワードがわかったので、変更してあげます。

下記コマンドを実行すると対話形式で質問されるので、答えてあげます。

mysql_secure_installation

実行すると下記が聞かれます。

Securing the MySQL server deployment.

Enter password for user root: +vQls#mDE8V0

初期パスワードを入れてくれとのこと。

The existing password for the user account root has expired. Please set a new password.

New password: hoge@Hoge1

新しいパスワードを入れてくれとのこと。なので今回は「hoge@Hoge1」にしました。

Re-enter new password: hoge@Hoge1

新しいパスワードをもう一回入れてくれとのこと。

The 'validate_password' plugin is installed on the server.
The subsequent steps will run with the existing configuration
of the plugin.
Using existing password for root.

Estimated strength of the password: 100 
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n

「validate_password」というプラグインを入れますか?っていう質問です。

こちらは、セキュリティを強化するためパスワードに条件をつけることが可能になります。

まあローカル環境なので今回はいらないということで「n」を入れました。

プラグインを入れたい方は「y」を選択してください。

 ... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y

「anonymous 」ユーザーを削除しますか?とのこと。

今回は削除するので「y」。

Success.


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : n

リモートから root ユーザーでログインを禁止しますか?とのこと。

ローカル環境なので今回は「n」にしました。

 ... skipping.
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y

「test」というデータベースを削除しますか?とのこと。

いらないので削除します「y」。

 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y

権限のテーブルをリロードして読み込みますか?とのこと。

よくわからないので読み込んでやりましょう。「y」

Success.

All done!

完了です。。長かったですね。。

先ほど新しく変更したパスワードで入れるか確かめます。

mysql -u root -phoge@Hoge1

赤文字のところは自分のパスワードを入れてください。

上記の書き方はセキュリティ的に良くないのでやめましょうw

mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.27 MySQL Community Server (GPL)

Copyright (c) 2000, 2019, 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.

mysql> exit

これでMySQLに入れました。

本来であれば、rootユーザーで触るのではなく、

権限を設定した新しいユーザーを作るべきですが、

ローカル環境なので、rootでDBを触って大丈夫です。

ログインできることが確認できたので「exit」と書き込んで抜けましょう。

④データーベースの文字コードを設定する

CakePHPを使うために、データベースを作成したいところなのですが、

そのまま作るとデータベースの文字コードがUTF8ではなくなってしまうので、

MySQLの設定ファイルをいじってUTF8で作成するように修正します。

下記コマンドでまず設定ファイルのバックアップを取っておきましょう。

sudo cp /etc/my.cnf /etc/my.cnf_bk

バックアップが取れたので、設定ファイルを修正します。

sudo vi /etc/my.cnf
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

character-set-server=utf8 #mysqldセクションの末尾に追加

[client]
default-character-set=utf8 #clientセクションを追加

赤文字の部分を追加してあげてください。

保存ができたら、MySQLを再起動します。

sudo systemctl restart mysqld

⑤データベース作成

これで再起動ができたので、CakePHPのプロジェクト用にデータベースを作成します。

下記コマンドで再度データベースへログインします。

mysql -u root -phoge@Hoge1

ログインができたらデータベースを作成するコマンドを実行します。

create database cake1;

赤文字の箇所が作成するデータベース名になるので、

自分な好きな名前にしてください。(日本語で書くのはやめてくださいね。。)

データベースの作成ができたら、本当に作られているか確認します。

show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| cake1              |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

あったので無事作られたようですね!

だいぶ長くなってしまいましたが、これでMySQLの設定は完了です。

それでは、次回が最後です。

CakePHPのプロジェクト作成

をお送りします。

ありがとうございました。

スポンサーリンク




シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク




%d人のブロガーが「いいね」をつけました。