重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

サーバAで作成したmysqlデータベースをサーバBへコピーしたいと考えております。

サーバAの /var/lib/mysql/mysql のフォルダごとコピーし、サーバBへ移してフォルダを上書きしたのですが、上書きされておらず、デフォルトのままでした。

mysqldump mysql -p > mysql

でmysqlデータベースをエクスポートし、

mysql -uroot -p -D mysql < mysql

インポートを試みたのですが、すでにmysqlデータベースが存在し、中にデフォルトの空ではないテーブル(user, colums_priv等) が存在するためにインポートすることができませんでした。

ERROR 1050 at line 11: Table 'columns_priv' already exists

サーバAで新たに追加したユーザ、また privileges をサーバBへコピーするにはどうすれば良いのでしょうか?

よろしくお願い致します。

A 回答 (2件)

> フォルダごとコピーし、サーバBへ移してフォルダを上書き



これは本来はやってはいけません。
同じアーキテクチャ(OS)かつ同じバージョン(メジャーバージョン)のMySQLの場合は行っても良いですが、それ以外でやると互換性がないので使えません。

いったん手動でインポート先のデータベースを消してから行うか、
エクスポートしたSQL文のファイルに

DROP DATABASE `データベース名`;
CREATE DATABASE `データベース名`;
USE `データベース名`;

DROP TABLE IF EXISTS `テーブル名`;
CREATE TABLE IF NOT EXISTS `テーブル名` ( 以下略

というように一旦テーブルやデータベースを削除するようにしましょう。
    • good
    • 0
この回答へのお礼

ご返事遅れました。
アドバイス頂いたとおりに一度インポート先のDBをDROPしてからやったら、インポートすることができました。

しかしながら、データベース上にアカウントは存在するのに、なぜかそのアカウントを使ってMySQLにログインしようとすると失敗します…。パスワードがはじかれてしまって…。

お礼日時:2006/12/04 03:55

sqlで出力した後、エディタなどで編集し、replace構文で取り込んで下さい

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!