MySQLデータベースの移行&CakePHPの外部DBサーバアクセス
研究用で使用しているデータベースを移行させました.
そのときの手順のメモです.
【やりたいこと】
[移行前]
移行元サーバ=WEBサーバ+DBサーバ
[移行後]
移行元サーバ=WEBサーバ
移行先サーバ=DBサーバ
【環境】
CentOS 6.5
MySQL 5.1
CakePHP 2.5
【手順】
1)バックアップファイルの作成
移行元のDBサーバにて以下を実行する.
# mysqldump -q [データベース名] -p[パスワード] > [バックアップファイル名]
2)バックアップファイルを移行先のサーバに送信
今回はsftpを使用した.
# sftp [移行先のユーザ名]@[移行先サーバのIPアドレス]
簡単な操作の説明
移行前のサーバを操作するコマンド
・lls
・lcd
移行先のサーバを操作するコマンド
・ls
・cd
バックアップファイルを移行先のサーバに移動させる.
> put [バックアップファイル名]
3)移行先のサーバに接続
sshでの接続.移行元のサーバにて以下のコマンドを実行
# ssh [ユーザ名]@[IPアドレス]
必要に応じてパスワードを入力
4)移行先のデータベース(MySQL)の設定
MySQLにログインする.
# mysql -u [ユーザ名] -p[パスワード]
移行先のデータベースに新たなユーザを追加する.
mysql> GRANT ALL PRIVILEGES ON *.* TO [ユーザー名]@localhost IDENTIFIED BY '[パスワード]' WITH GRANT OPTION; mysql> FLUSH PRIVILEGES;
データベースを作成する.
mysql> CREATE DATABASE データベース名 CHARACTER SET utf8;
4)データベースの移行
以下を実行させる.
# mysql -p[パスワード] [新たなデータベース名] < [バックファイル名]
[新たなデータベース名]には先ほど作成したデータベース名が入る.
5)外部から接続するユーザの設定
新たに作成(移行先)のデータベースに接続可能なユーザを作成する.
mysql > grant all privileges on sta_macaddr_webcam.* to cap@192.168.95.160 identified by ‘capcapcap’; mysql > flush privileges;
6)ファイアウォールの設定
# vi /etc/sysconfig/iptables
以下を追加
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
3306はmysql用のポート
移行元サーバから以下を実行して接続出来るか確認する.
# mysql -h [移行先サーバのIPアドレス] -u [ユーザ名] -p[パスワード]
これで接続出来なかったらなんらかのミスがあるかと,
7)移行先DBサーバに接続させるためのCakePHPの設定
# vi ~/app/Config/database.php
/app/Config/database.phpを編集、内容は以下のようにする.
class DATABASE_CONFIG { public $default = array( ‘datasource’ => ‘Database/Mysql’, ‘persistent’ => false, ‘host’ => ‘192.168.95.240’, ‘port’ => ‘3306’, // mysql用のポート ‘login’ => ‘cap’, ‘password’ => ‘capcapcap’, ‘database’ => ‘sta_macaddr_webcam’, ‘prefix’ => ‘’, ‘encoding’ => ‘utf8’, ); }
これでCakePHPのアプリで移行先のDBサーバにアクセス出来るようになります.