americandog1993の日記

プログラマー歴半年のメモ

VPSでCakePHP③ MySQL設定

CakePHP導入段階ではDBとの接続が確立されていない。
ということでMySQL設定を進めていく。

MySQLにログイン

まずは起動。

$ sudo systemctl start mysqld

初期パスワードが生成されているので確認。

$ sudo cat /var/log/mysqld.log | grep 'password is generated'
2017-07-29T03:12:19.639837Z 1 [Note] A temporary password is generated for root@localhost: [パスワード]

パスワードを確認できたらログインする。

$ mysql -u root -p

パスワードを求められるので入力。
うまく入れた場合はまずパスワードを変更する(ここでトラブった場合は後述)。

mysql> set password for root@localhost=password('Cake@1234');

ある程度強固なパスワードを設定する必要があり、大文字英字、小文字英字、数字、記号をすべて使わなければ通らないので注意。

databaseを作成する。

mysql> create database cake_db;
Query OK, 1 row affected (0.00 sec)

ここまで終えたらMySQLを出る。

mysql> \q
Bye

CakePHPに接続

$ cd [自分のプロジェクトディレクトリ]
$ sudo vi config/app.php

app.phpの'Datasources'以下を修正。

// config/app.php
'username' => 'root'
'password' => 'Cake@1234'
'database' => 'cake_db'

これでdatabaseが緑になるはず。
f:id:americandog1993:20170730132935p:plain

なぜかMySQLに入れない時

MySQL初ログイン時、どう考えても正しいパスワードを打ってるのに入れないことがある(筆者はこのトラブルに遭遇した)。
その場合は下記のteratailの質問を参考にセーフモードでパスワードの再設定を行う。
MySQL - CentOS7.2でのMySQLインストールでの問題(53026)|teratail
以下、回答からの引用。
CentOS7ならこのコマンドを順に叩いていけば解決するはず。

systemctl stop mysqld

systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"

systemctl start mysqld

mysql -u root

mysql> UPDATE mysql.user SET authentication_string = PASSWORD('MyNewPassword')
    -> WHERE User = 'root' AND Host = 'localhost';
mysql> FLUSH PRIVILEGES;
mysql> quit

systemctl stop mysqld

systemctl unset-environment MYSQLD_OPTS

systemctl start mysqld