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に接続するのが目的。


この記事の流れ
-
MySQLをインストール・起動
-
エラーが出た(エラーなしなら飛ばす)
-
MySQL初期設定
-
CakePHPのデータベース設定
-
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のアイコンが緑色になれば成功!

ここまで。
接続はできたけど、毎回sudo使うことになったり、そもそも
を発見。課題。参考記事
-
データベース設定について:
-
MySQLエラーについて:
ありがとうございました。