ysku's blog

ウェブ・無線通信・組み込みとか

MySQLデータベースの移行&CakePHPの外部DBサーバアクセス

f:id:yusuke1581:20141112005253j:plain
研究用で使用しているデータベースを移行させました.
そのときの手順のメモです.

【やりたいこと】
[移行前]
移行元サーバ=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サーバにアクセス出来るようになります.

以上がMySQLのDBサーバの移行とCakePHPからの接続になります.