[Sy] MAMPを使わないでMacにローカルWeb開発環境を構築する〜その5:PHPとMySQLの連携〜
MAMPに頼らないでMacにローカル開発環境を作りたい
前回はMySQLをインストールするところまで説明しました。
- MAMPを使わないでMacにローカルWeb開発環境を構築する〜その1:挑戦するメリットは?〜
- MAMPを使わないでMacにローカルWeb開発環境を構築する〜その2:Apacheとは?〜
- MAMPを使わないでMacにローカルWeb開発環境を構築する〜その3:PHPとApacheの連携〜
- MAMPを使わないでMacにローカルWeb開発環境を構築する〜その4:MySQLをインストールする〜
今回は、PHPからMySQLに接続 してみます。
MySQLにユーザとDBを準備しておく
不便なのでMySQLにPATHを通す
前回インストールしたMySQLのバージョンを確認するには、
$/usr/local/mysql/bin/mysql --version
mysql Ver 14.14 Distrib 5.6.13, for osx10.7 (x86_64) using EditLine wrapper
と入力しなければいけません。
・・・長い!めんどくさい!
なので、PATH を通します。.bash_profile
というファイルを開きます。(ない場合は新規で作成)
$vim ~/.bash_profile
最後の行に、以下を追記してください。
export PATH=$PATH:/usr/local/mysql/bin
保存して、一度ターミナルをcommand + Q
で閉じてから再起動します。
これで、mysql
だけでコマンドを実行できるようになります。楽ですね。
$mysql --version
mysql Ver 14.14 Distrib 5.6.13, for osx10.7 (x86_64) using EditLine wrapper
mysql
の他にも、この後出てくるmysqladmin
とかmysqlshow
なんていう命令も、これで短いコマンドで実行できるようになります。
MySQLのrootアカウントにパスワードを設定
さて、PATHを通し終わったら、PHPから操作するためのデータの準備をしていきます。
まずは、MySQLのrootアカウントにパスワードを設定 します。
$mysqladmin -u root password 'password'
「password」の部分にはあなたが設定したいパスワードを入れてください。
これは、あなたのMacのrootアカウントではなく、あくまでもMySQLのrootアカウント です。ご注意を。
rootでの作業について
※本来なら、root以外のユーザを作成するのがセキュリティ的には良いのですが、今回はこのままrootアカウントを使って説明していきます。
今あるDBを確認
ここで、インストール直後にデフォルトで作られているデータベース(以降DBと書きます)を確認します。次のコマンドを入力してください。
$mysqlshow
すると、2つほどすでに作れられてるのがわかります。
MySQLにログインして新しいDBを作成
では、練習用に新しいDBを作っていくので、mysqlにログインしましょう。
$mysql -u root -p
Enter password:
先ほど設定したパスワードを入力し、mysqlにログインします。ログインすると、こんなメッセージが表示されます。
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.6.13 MySQL Community Server (GPL)
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
「mysql>」というところで止まっているかと思いますが、これはmysqlへの命令入力待ち状態です。
mysqlに命令をするためには、SQL という DB命令用の言語 を使って、クエリ(query) と呼ばれる文字列を送ります。(発行する、という言い方をします)
慣用的に、SQLとクエリという言葉は混同して使われているので、「SQLを発行する」という表現もよく聞きます。
DBを作成するためには、create database [DB名]
というクエリを発行します。今回はpractice
というDBを作成するので、こうですね。最後にセミコロンを付けるのを忘れずに、Enter
を押します。
mysql> create database practice;
Query OK
と表示されれば、無事にクエリが処理されています。最後にセミコロンを付けないと、いつまでたってもクエリは発行されないので注意しましょう。
次に、テーブルを作成します。まず、新しく作成したpracticeを「使用するDB」に設定します。
mysql> use practice;
続けて、memberテーブルを作成します。
mysql> create table member (id int, name text);
これで、idとnameという値を持ったデータを登録できる、memberテーブルができました。
最後に、テーブルにデータを入れておきます。
mysql> insert into member (id, name) values ('1', 'Tanaka');
無事に登録できましたか?では、もう1件入れておきます。
mysql> insert into member (id, name) values ('2', 'Sato');
クエリは、とりあえず今は覚えなくても良いので、なんとなく理解できれば十分です。
ここで一旦、mysqlの構造を整理します。
そもそも、mysqlというのは RDBMS(Relational DataBase Management Syste) の一つです。そうです、システム なんです。
なので、まずmysqlという「データベースを管理するシステム」があって、その中に例えば「practice」というデータベースがあって、データベースの中にテーブルがあって、テーブルの中にデータがある。という階層です。
mysql(RDBMS) -> データベース -> テーブル -> データ
こんな感じです。ここもなんとなく理解しておけばとりあえずは大丈夫です。
PHPからMySQLに接続する
DBの準備はできたので、続いてPHPの方を見ていきます。
php.iniの準備
まず、PHPの設定ファイル php.ini を作成します。
$sudo cp /etc/php.ini.default /etc/php.ini
$sudo chmod 644 /etc/php.ini
php.iniを編集して、MySQLに接続できるようにします。
$sudo vim /etc/php.ini
次の行を探して、値をすべて/tmp/mysql.sock
にします。
pdo_mysql.default_socket = /tmp/mysql.sock
mysql.default_socket = /tmp/mysql.sock
mysqli.default_socket = /tmp/mysql.sock
編集が終わったら保存して、Apacheを再起動します。
$sudo apachectl restart
PHPのサンプルプログラムを作成する
次に、MySQLへ接続するプログラムをPHPで書いていきます。
ドキュメントルート配下に、dbtest.php
を作成します。
$sudo vim /Library/WebServer/Documents/dbtest.php
下記のコードを保存してください。
{$code:5}
このコードは、先ほど作成したDB「practice」にある「memberテーブル」から、全件データを取得して表示するというプログラムになります。
コードを保存したら、パーミッションを変更しておきます。
$sudo chmod 705 /Library/WebServer/Documents/dbtest.php
ブラウザからPHPのプログラムにアクセス
さーいよいよ実行してみます。次のURLにアクセスしてみてください。
http://localhost/dbtest.php
先ほど保存したデータ2件が表示されれば、PHPからMySQLへの接続は成功です!
ここまでで、もう環境は出来上がったようなものです。
Apache上でPHPを実行し、MySQLに接続できた。 ということになります。
これで終わっても良いのですが、もう一回だけ続けます。
最終回は、最後にブラウザ上からMySQLを操作できる、phpMyAdmin のインストールについて説明します。