2

db1コマンドラインを使用して名前を付けたmysqlデータベースを複製したいと思います。そうすることで、すべてのテーブルとフィールドをから取得したいのですdb1が、その値は取得しません。

私はこのトピックに関する多くのSOQ&Aを見てきました。たとえば、mysqldumpを使用せずにデータベースをコピー/複製します。残念ながら、このリンクで提案されている2段階のプロセスを実行できません。

  1. データベースを作成する
  2. db1からdb2へのmysqldump

これがbashターミナルで始まる私のコードです:

ubuntu@ip-xx-xxx-xxx-xx:~$ sudo -i
root@ip-xx-xxx-xxx-xx:~# mysql -h mysite.com -u timpeterson -p
Enter password: 
mysql> create database `db2`;
ERROR 1044 (42000): Access denied for user 'timpeterson'@'%' to database 'db2'

を入力db2しない限り、作成できることは注目に値します。残念ながら、rootにならないと、リモートでアクセスする方法がわかりません。これが最終的に必要なことです。つまり、自分のWebアプリからアクセスする方法がわかりません。rootsudo idb2db2mysite.com

4

2 に答える 2

3

もちろん、データベースを作成する権限を持つログインを使用する必要があります。

mysql管理者アカウント(多くの場合、rootまたはmysqladm [in])から、

CREATE DATABASE db2;
-- instead of ALL PRIVILEGES, see what privileges you really need for the application
GRANT ALL PRIVILEGES ON db2.* TO 'timpeterson'@'%' IDENTIFIED BY 'timspassword';
FLUSH PRIVILEGES;

次に、コマンドラインから

mysqldump --opt --no-data db1 --user=USERWITHACCESSTODB1 --password | mysql db2 --user=timpeterson --password

FLUSH PRIVILEGESは特に注意が必要です。一部のインストールでは、特権が自動的に再ロードされないため、Clark Kentの超能力をユーザーに付与しても、そのユーザーはまだ何もできません。

于 2012-07-10T19:41:49.610 に答える
1

最初の問題は権限の問題である可能性があります。rootとしてMySQLコンソールにログインして実行してみてくださいGRANT ALL PRIVILEGES ON db2.* TO 'timpeterson'@'%';。その後、再試行してください。

于 2012-07-10T19:40:39.760 に答える