MySQL(MariaDB)をユーザー情報を含めてすべて移行する方法

MySQLのデータディレクトリを旧データディレクトリに指定すると完全に同じデータベース構成で移行ができます。

[参考記事] 4.0以前と4.1以降のパスワード方式の違い

/etc/my.cnf
[mysqld]
datadir=/var/lib/mysql

別のストレージからサルベージする場合は、rsyncでファイル構成をそのままコピーします。

rsync -av 【移行元パス】 【移行先パス】

rsyncは標準ではインストールされていないので、インストールされていなければインストールします。

yum install rsync

/etc/my.cnfのdatadirを、コピーしたディレクトリに変更して、データベースを再起動すると反映されます。

サービス再起動

CentOS7
systemctl restart mysqld.service

CentOS6以前
service mysqld restart

これで古いデータディレクトリをサルベージできます。
このときrootのパスワードなども古いデータディレクトリのものになります。

[参考記事] 4.0以前と4.1以降のパスワード方式の違い
また4.0以前のMySQLから移行する場合、パスワードの扱いが異なるため認証に失敗します。
古い方式のパスワードを扱うためには、/etc/my.cnf に old-passwords を追記し、再起動します。

/etc/my.cnf
[mysqld]
old-passwords

Linuxコマンドでmysql_upgradeを実行すると、すべてのデータベースのアップグレードができます。
mysql_upgradeコマンドはすべてのデータベースのすべてのテーブルに対して、MySQL サーバーの現在のバージョンとの非互換性を調べます。
またシステムテーブルをアップグレードして、追加された可能性のある新しい権限または機能を利用できるようにします。

# mysql_upgrade

mysql_upgradeを行ったあとは、MySQLを再起動します。

関連記事

スポンサーリンク

NULLIF関数 等しい場合にNULLを返す

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る