LoginSignup
1
1

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-10-11

環境

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をインストールする。
(参考記事:【簡単】MacにHomebrewをインストールする方法と基本的な使い方

ターミナル
$ 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使うことになったり、そもそもHomebrewでsudoは使ってはいけないという情報を発見。課題。

参考記事

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

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1