MySQL
mysqldump

mysqldumpを使ってデータベースの複製をしました

前提条件

レンタルサーバー:さくらVPS
今まで本番環境のみのアプリケーションから開発環境を作成するにあたり、開発用のデータベースも作成することしました。

手順

1.データベースを複製するために既存のDBをsqlファイルに保存する
2.開発用のデータベースを扱うためのユーザーとDBを作成
3.保存したsqlファイルを転送する

1.データベースを複製するために既存のDBをsqlファイルに保存する

既存のDBを複製するためには、mysqldumpコマンドを使う。

(サーバー上で実行)
例)mysqldump -u ユーザー -p 既存のデータベース名 > 保存先
mysqldump -u psnavi -p ptolemy_ps > /tmp/ptolemy_ps.20151216.sql

2.開発用のデータベースを扱うためのユーザーとDBを作成

一応既存のデータベースを操作しないように開発用のユーザーと開発用のDBを作成します。

まずはmysqlにrootでログインします。(rootでないと新たにユーザーを作成できませんので)

(MySQL上)
create user 開発用のユーザー identified by 'パスワード';
create database 開発用のDB;
GRANT SUPER ON 開発用のDB.* TO '開発用のユーザー'@'localhost';(後で転送する時にsuperの権限がないとDBを転送できない)
FLUSH PRIVILEGES;(設定を反映)

3.保存したsqlファイルを転送する

最後にmysqldumpを行った際に保存したsqlファイルを使って開発用のDBを複製したいと思います。

mysql -u 開発用のユーザー -p 開発用のDB < /tmp/ptolemy_ps.20151216.sql

もしAccess denied; you need (at least one of) the SUPER privilege(s) for this operationとエラーがでたら、sqlファイルの保存先(ここでは/tmp/ptolemy_ps.20151216.sql)のを以下のようにしてください。

vim /tmp/ptolemy_20151216.sql

/*!50013 DEFINER=`開発用のユーザー`@`localhost` SQL SECURITY DEFINER */

mysqldumpユーザーと新しくDBをリストアするユーザーが違うことで起きたエラーです。

以上で終わり!!