2020-10-11

CakePHP3.9にMySQLを接続する(Homebrew使用)

PHP環境構築MySQL

環境

OS:MacOS Catalina 10.15.4 PHP:7.3.22 Composer:1.10.13 Homebrew:2.5.5 MySQL:8.0.21
  • 前回の記事:
以下のようにデータベース設定が未完了。今回はCakePHPでMySQLに接続するのが目的。 データベース接続前のCakePHPの画面

この記事の流れ

  1. MySQLをインストール・起動
  2. エラーが出た(エラーなしなら飛ばす)
  3. MySQL初期設定
  4. CakePHPのデータベース設定
  5. CakePHP起動

1. MySQLをインストール・起動

パッケージ管理ツールHomebrewを使用してMysqlをインストールする。 参考記事▼
ターミナル
$ brew install mysql
ターミナル
$ mysql --version
mysql  Ver 8.0.21 for osx10.15 on x86_64 (Homebrew)
インストールされたらCakePHPのアプリまで移動してからMySQLを起動。
ターミナル
$ mysql.server start

2. エラーが出た(エラーなしなら飛ばす)

MySQLを起動しようとしたらエラーが出たので、手当たり次第ボタンがあれば連打した。
▼エラー内容
ターミナル
./usr/local/Cellar/mysql/8.0.21_1/bin/mysqld_safe: line 144: /usr/local/var/mysql/[コンピュータ名].local.err: Permission denied
/usr/local/Cellar/mysql/8.0.21_1/bin/mysqld_safe: line 144: /usr/local/var/mysql/[コンピュータ名].local.err: Permission denied
/usr/local/Cellar/mysql/8.0.21_1/bin/mysqld_safe: line 199: /usr/local/var/mysql/[コンピュータ名].local.err: Permission denied
/usr/local/Cellar/mysql/8.0.21_1/bin/mysqld_safe: line 144: /usr/local/var/mysql/[コンピュータ名].local.err: Permission denied
ERROR! The server quit without updating PID file (/usr/local/var/mysql/[コンピュータ名].local.pid).
  • 権限がない → sudoコマンドで実行する。
  • PIDファイルが .... ? → このエラー文は様々な要因が考えられるらしい。 → そもそもファイルがなかったので作成。
ターミナル
$ sudo touch /usr/local/var/mysql/[コンピュータ名].local.pid
それでもエラーは消えなかった。
/usr/local/var/mysql/[コンピュータ名].local.err という場所に詳しいエラーが書いてあるらしいので確認しにいく。
ターミナル
$ sudo cat /usr/local/var/mysql/[コンピュータ名].local.err
[ERROR]となっているところを発見!
ターミナル
2020-10-10T16:38:01.565742Z 0 [ERROR] [MY-010274] [Server] Could not open unix socket lock file /tmp/mysql.sock.lock.
2020-10-10T16:38:01.566306Z 0 [ERROR] [MY-010268] [Server] Unable to setup unix socket lock file.
2020-10-10T16:38:01.567056Z 0 [ERROR] [MY-010119] [Server] Aborting
/tmp/mysql.sock.lockファイルにいなくなってもらう。
ターミナル
$ sudo rm /tmp/mysql.sock.lock
いざ、(sudoで)MySQL起動!
ターミナル
$ sudo mysql.server start
Starting MySQL
.. SUCCESS!

3. MySQL初期設定

パスワードなしでMySQLにログインする。
ターミナル
$ mysql -uroot
  • パスワード設定
使うデータベースを指定して
ターミナル
mysql> use mysql;
rootユーザーのパスワードを [設定したいパスワード] に変更する。
ターミナル
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '[設定したいパスワード]';
一旦、退出。
ターミナル
mysql> exit
パスワード使用でログインする。
ターミナル
$ mysql -uroot -p
Enter password: [設定したパスワード]

4. CakePHPのデータベース設定

  • データベース作成
MySQLでデータベース一覧を確認する。
ターミナル
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
CakePHPで使用するデータベースを新規で作成する。(今回はcake_sampleという名前で作成)
ターミナル
mysql> create database cake_sample;
先ほど作成したデータベースを一覧で確認する。
ターミナル
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| cake_sample        |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
MySQLは設定完了。
ターミナル
mysql> exit
  • CakePHPのデータベース設定
CakePHPアプリの config/app.local.php をテキストエディタで開き、username, password, databaseを変更する。
/config/app.local.php(変更後)
    'Datasources' => [
        'default' => [
            'host' => 'localhost',
            'username' => 'root', //変更
            'password' => '[設定したパスワード]', //変更
            'database' => 'cake_sample', //変更
            'log' => true,
            'url' => env('DATABASE_URL', null),
        ],
    ],
mysqlを再起動させる。
ターミナル
$ sudo mysql.serve restart
Shutting down MySQL
.. SUCCESS!
Starting MySQL
. SUCCESS!

5. CakePHP起動

ターミナル
$ bin/cake server
ブラウザで http://localhost:8765/ にアクセスして以下のようにdatabaseのアイコンが緑色になれば成功! データベース接続完了後のCakePHPの画面
ここまで。
接続はできたけど、毎回sudo使うことになったり、そもそも
を発見。課題。

参考記事

  • データベース設定について:
  • MySQLエラーについて:
ありがとうございました。