Max OS X YosemiteにLAMP環境(Linux,Apache,MySQL,PHP)をソースコードからインストールするシリーズのMySQL編です。
もくじ
cmakeのインストール
MySQLのビルドにはCMake(http://www.cmake.org/)というビルド環境が必要です。
./configure --prefix='/インストール先のパス' make test make install
MySQL5.6のソースコードをダウンロード
MySQL(https://www-jp.mysql.com/)のダウンロードページ下部(わかりにくい)の、
”MySQL Community Edition (GPL)”というリンクを開き、”MySQL Community Server”をダウンロードします。
”Mac OS X 10.9 (x86, 64-bit), Compressed TAR Archive”というMac向けのソースコードがダウンロードできるようになっています。(本記事の作成時点でのファイル名です。)
MySQL5.6のビルド&インストール
ソースコードを展開し、CMakeとmakeを使ってビルド&インストールします。
cmake -DCMAKE_INSTALL_PREFIX='/インストール先のパス' make test make install
MySQLの初期設定
MySQLの設定
etcディレクトリ作成と設定ファイル(my.cnf)設置
MySQLのインストールディレクトリ内にetcディレクトリを作成し、
ソースコードの”support-files”ディレクトリの中にある
“my-default.cnf”ファイルを”my.cnf”という名前でetcディレクトリにコピーします。
my.cnfファイル編集
[mysqld] ~省略~ #インストール先のディレクトリ指定 basedir = /Users/ユーザ名/programs/mysql #データの保存先指定 datadir = /Users/ユーザ名/programs/mysql/data #ソケットファイルの作成先指定 socket = /Users/ユーザ名/programs/mysql/lib/mysql.sock #ポート指定 port = 3306 ~省略~ #文字コード指定 character-set-server = utf8 # [client] #ソケットファイルの作成先指定 socket = /Users/ユーザ名/programs/mysql/lib/mysql.sock #ポート指定 port = 3306
ソケットファイル(mysql.sock)の作成先はPHPとMySQLを連携させる時に必要になります。
ちなみにmysql.sockファイルはMySQLが起動している間だけ作成されます。
また、標準状態のFinderからは見えません。ターミナルで’ls -la’などすると作成されていることが確認できます。
MySQLの初期化
scriptsディレクトリ内にあるmysql_install_dbを実行します。
MySQLのインストールディレクトリ/scripts/mysql_install_db
MySQLを使うためのデータベースなどが作成されます。
MySQLの起動・停止
MySQLの起動と停止を確認します。インストールディレクトリのbin内にあるmysqldとmysqladminというプログラムを使用します。
MySQLの起動
./mysqld
MySQLの停止
./mysqladmin -u root shutdown
PHPとの連携設定
PHPプログラムからMySQLを利用するための設定を行います。
php.iniを編集します。先ほどmy.cnfで指定したmysql.sockへのパスを記述します。
[pdo] pdo_mysql.default_socket = /Users/ユーザ名/programs/mysql/lib/mysql.sock [mysql] mysql.default_socket = /Users/ユーザ名/programs/mysql/lib/mysql.sock
PHPからのMySQL接続テスト
MySQLでユーザとデータベースを作成してあることを前提として、PHPからMySQLを利用するテストです。
$user = 'MySQLユーザ名'; $pass = 'MySQLユーザのパスワード'; try { $dbh = new PDO('mysql:host=localhost;dbname=データベース名;charset=utf8', $user, $pass); }catch (PDOException $e){ exit('DB接続エラー'.$e->getMessage()); } $stmt = $dbh->query("SELECT * FROM テーブル名"); while($row = $stmt -> fetch(PDO::FETCH_ASSOC)){ echo $col_1 = $row["キー名1"]; echo $col_2 = $row["キー名2"]; } $dbh = null;
最初、mysql_connect()で接続しようとしたのですが、今のPHPでは推奨されてないんですね。
時代は流れているのですね(´・ω・`)。