Syntax Error.

[Sy] MAMPを使わないでMacにローカルWeb開発環境を構築する〜その5:PHPとMySQLの連携〜

2013/08/12

MAMPに頼らないでMacにローカル開発環境を作りたい

前回は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つほどすでに作れられてるのがわかります。

mysqlshowの結果

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 のインストールについて説明します。