2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

MAMPでLaravelとデータベースを接続する

Last updated at Posted at 2023-04-05

データベースへ接続とは

Laravelがデータベース(以下DB)に接続すると
DBに蓄積されたデータをWEB画面に
表示させることができるため
ブログや通販サイトのように
個別の情報を表示できるようになります

DBにLaravelを接続するには

DBにLaravelを接続するには次の情報が必要です

  • 接続先のホスト
  • 接続先のポート番号
  • データベース名
  • ユーザー名 / パスワード
  • ソケット(必須ではありません)

上述の情報で次のファイルを修正します

  • .envファイル
    参照元:[Laravelインストール先]
  • database.php
    参照元:[Laravelインストール先]/config/database.php

接続情報について

接続先のホストとは

データベースが稼働しているサーバーのサーバー名です
サーバーのIPアドレスを入力することもできます。

お名前.comなどのレンタルサーバーではサーバー名を
公表されていないケースもあり、その場合
コマンドでIPアドレスを確認するか
IPに紐づいたホスト名を確認するコマンドを実行します

ローカルホストの場合は、ホスト名は
localhostに固定されています。
IPアドレスも127.0.0.1に固定されています

スクリーンショット 2023-04-05 9.41.38.png

接続先のポート番号とは

通信をする際の機器の接続口もしくは窓口を指します

銀行や役所で受付する窓口が複数あるように
PCにUSBポートやLANポートなど複数の差込口があるように

DBのデータを受付する窓口も専用のポートが存在するため
Laravel側ではどこにデータを送信するのか
ポート番号つまり送信先を設定する必要があります

ポート番号はMAMPの場合初期が8889ですが
MAMPの設定画面で簡単に変更することができます
※後述のブラウザからも確認が取れます

スクリーンショット 2023-04-05 9.20.55.png

データベース名とは

テーブルやレコードなどを格納した
データベースの実名です

MAMPがスタートされている場合は
phpMyAdminが使用できるためデータベース名は
ブラウザ画面で確認できます

スクリーンショット 2023-04-04 16.21.43.png

DBのユーザー名とパスワード

DBは操作するユーザーごとに操作権限を設定することができ
ユーザーに与えられたユーザー名やパスワードによって
テーブルの閲覧のみや内容の変更までなど詳細な権限を
設定をすることができます

データベースの接続に必要なユーザー名パスワード
MAMPのMySQLの場合
初期ではどちらもrootになります

ソケットとは

電球やシガーライターの差込口をソケットと呼びますが
それと同等で通信の接続口を指します

25480477_s.jpg

MySQLでサーバーのDBと通信をする場合
通信の接続口は2種類存在します

  • ソケット接続(ローカル通信)
  • TCP接続(インターネット通信)

単純にソケット接続の方が通信速度が理論上速いと
されておりソケット接続を用意しなければ
TCP接続になります。よって必ず設定しなくてはいけない
項目ではありません

ソケット接続に切替えるためにはmysql.sockという
ファイルが必要であり、MAMPにはmyslq.sockが
配置されているためファイルのパスをLaravelに
設定すればソケット接続を使用できます

具体的にdatabase.phpでパスを指定します

Laravelのバージョンによっては
.envファイルに設定する場合もありますので
適宜対応お願いします

MAMPでの接続情報確認

接続に関する情報はMAMPの場合
WEBサイトから確認できます

スクリーンショット 2023-04-03 15.58.17.png

スクリーンショット 2023-04-04 11.27.12.png

LaravelとDBを接続する

LaravelとDBを接続させるには
フレームワーク内に存在する設定ファイルの
DB接続情報を上書きする必要があります

DB接続の設定ファイルは隠しファイル

DBを接続するための情報を入力するファイルは
隠しファイルのため見えません。

次の操作により隠しファイルを
選択できるように操作します

Macの場合
「command」+「shift」+「.」

DB接続情報を.envファイルに上書きする

Laravelのプロジェクトを開き
隠しファイルの.evnファイルを開いて
環境変数の値を変更します

環境変数とはOSが参照する値を指し
この場合、Laravelが参照する大元の
設定値になります

スクリーンショット 2023-04-05 10.16.58.png

MAMPのhtdocsフォルダに作成した
Laravelのプロジェクトを開きます

※開く場合にどのアプリで開くか
求められる場合はテキストエディットなどの
アプリを選択します

スクリーンショット 2023-04-05 10.21.35.png

DB接続情報を上書きする

開いた.envファイルから上述の
情報を上書きします

  • 接続先のホスト
  • 接続先のポート番号
  • データベース名
  • ユーザー名 / パスワード

スクリーンショット 2023-04-05 10.48.33.png

DB_CONNECTION

デフォルトでmysqlになっているため
mysql以外を使用している場合は変更が必要です

DB_HOST

ホスト名localhost
IPアドレス127.0.0.1
どちらを入力しても問題ありません

DB_PORT

MAMPの場合初期の値は8889です。
必要であれば適切な値に変更してください

DB_DATABASE

phpMyAdminの画面などで
データベース名をすでに作成している場合は
そのデータベース名を入力します

DB_USERNAME と DB_PASSWORD

MAMPの場合初期値が
root/rootなので
入力したら上書きします

その他

DBの接続情報は赤枠で囲まれた
DB_****のみであるため
APP_***やMAIL_***などを編集しても
DBの接続に影響はありません

DB情報をdatabase.phpに上書きする

.envファイルの上書きが済んだなら
database.phpにも情報を上書きします

参照元:[Laravelインストール先]/config/database.php

今回使用するデータベース管理システムは
MySQLなので赤枠で示したmysqlを編集します

database.php
'mysql' => [

            ~~~~~~省略~~~~
            'host' => 'DB_DATABASE','ホスト名',
            'port' =>  'DB_HOST','ポート番号',
            'database' => env('DB_DATABASE', 'データベース名'),
            'username' => env('DB_USERNAME', 'ユーザー名'),
            'password' => env('DB_PASSWORD', 'パスワード'),
            'unix_socket' => env('DB_SOCKET', '/Applications/MAMP/tmp/mysql/mysql.sock'),
            ~~~~~~省略~~~~

スクリーンショット 2023-04-08 14.38.17.png

DBに接続されているか確認する

.envファイルに接続情報を入力し上書きすれば
DBと連携する準備は整います。

接続されているかどうかの確認は
以下のコマンドで簡単に確認ができます

php artisan tinker

Laravel環境に標準搭載された対話型シェルです

シェルとはユーザーとOSを繋ぐプログラムの一種で
ユーザーが出した命令をOSに伝える窓口のような
役割を持っています

実行するコマンド手順.
① カレントディレクトリをLaravelのプロジェクトに設定します

$ cd /Applications/MAMP/htdocs/gakusyuu_sample 

② tinkerコマンドを実行してLaravelの対話型シェルを起動します

$ php artisan tinker 


DB::connection()->getPdo();

tinker(ティンカー)を使用するとコマンドで
プロジェクト内に存在するプログラムを
動作させることができます

レコードを登録、編集、出力する他
Laravelに記述した設定や関数などの
動作確認をコマンドだけで実行することができます

今回はtinkerを使用しDBが
正常に接続できているかを
確認します

次のコマンドを実行します
$ DB::connection()->getPdo();


-----以下解説------

・DBファザードとはDBに関する関数、プログラム群を指します
・connectionメソッドでデータベースに接続を行います
・getPdoで接続されたDBのサーバー情報を取得します

正しく接続されていない場合

DB::connection()->getPdo();
失敗した場合は接続が拒否されます

tinkerコマンドはexitで終了することが
できるため、一度終了した後に接続に必要な
設定値を見直してもう一度実行してください

スクリーンショット 2023-04-05 15.58.19.png

正しく接続された場合

DB::connection()->getPdo();
接続が成功した場合は接続先の
サーバー情報が出力されます

サーバー情報を出力されることが
目的なので、表示される値などは
確認に関係はありません

確認が終了次第、exit
tinkerを終了してください
スクリーンショット 2023-04-05 16.18.41.png

ソケット情報(パス)を入力しなかった場合

通信方法がTCP/IPになるだけで
特に通信に支障はありません

Unixソケットファイルで作成された接続は
MySQLとデータベースが同じコンピューター上の
サーバーに接続する場合にのみ使用できます

TCP/IPはインターネットを利用して通信する方法であり
Unixソケットは同じマシン上で効率的に通信を
行うことができます

スクリーンショット 2023-04-08 15.01.16.png

接続情報を確認するコマンド

.envファイルで設定したDBの
接続情報は次のコマンドで確認ができます

実行するコマンド.
※ php artisan tinker を起動した状態でコマンドを実行

> DB::connection()->getConfig();

接続が失敗した場合

次の参考画像ではわざとポート番号を
空欄に設定して接続確認を実行しています

設定値を修正してやり直す場合は
php artisan tinkerをexit
終了して再度実行する必要があります

スクリーンショット 2023-04-05 16.25.04.png

2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?