37

これがserverfaultに適した質問かどうかはわかりませんが、最近Amazon RDSをいじっていて、Webホストのmysqlユーザーに「ファイル」権限を取得するのに問題がありました。

私は単純だと思います:

grant file on *.* to 'webuser@'%';

動作しますが、動作せず、「ルート」ユーザーでも実行できないようです。何を与える?ロード データを使用する理由は、一度に何千もの挿入を行うのに超高速だからです。

誰かがこれを修正する方法を知っていますか、それとも別の方法を見つける必要がありますか?

このページhttp://docs.amazonwebservices.com/AmazonRDS/latest/DeveloperGuide/index.html?Concepts.DBInstance.htmlは、これを回避する別の方法を見つける必要があることを示唆しているようです。

ヘルプ?

UPDATE データベースをインポートしようとしているのではなく、ファイルロードオプションを使用して一度に数十万行を挿入したいだけです。

これを掘り下げた後、次のようになります。

 mysql> grant file on *.* to 'devuser'@'%';
 ERROR 1045 (28000): Access denied for user 'root'@'%' (using password: YES)


 mysql> select User, File_priv, Grant_priv, Super_priv from mysql.user;
 +----------+-----------+------------+------------+
 | User     | File_priv | Grant_priv | Super_priv |
 +----------+-----------+------------+------------+
 | rdsadmin | Y         | Y          | Y          |
 | root     | N         | Y          | N          |
 | devuser  | N         | N          | N          |
 +----------+-----------+------------+------------+
4

6 に答える 6

92

LOAD DATA LOCAL INFILEファイルはMySQLサーバー上ではなく、コマンドを実行しているマシン上にあるため、使用する必要があります。

以下のコメントに従って、フラグを含める必要がある場合もあります。

--local-infile=1
于 2010-06-10T01:16:44.950 に答える
9

それが何であれ...mysqlimportこの問題を回避するために使用する代わりに、LOCALオペランドをLOAD DATA INFILEに追加できます。

データのローカルINFILE をロードします ...

これは、FILE パーミッションを付与しなくても機能します。

于 2012-12-17T08:36:50.780 に答える
6

RDS で最高レベルの MySQL 権限を持っていないため、まだ実行できないことは確かです。少しテストしただけですが、データベースをインポートする最も簡単な方法は、ソースボックスからパイプすることです。

mysqldump MYDB | mysql -h rds-amazon-blah.com --user=youruser --pass=thepass
于 2009-10-29T01:40:39.263 に答える
2

バルク データを Amazon MySQL RDS にインポートするには、2 つの方法があります。ご都合に合わせて下記よりお選びいただけます。

  1. インポート ユーティリティを使用します。

    mysqlimport --local --compress  -u <user-name> -p<password> -h <host-address> <database-name> --fields-terminated-by=',' TEST_TABLE.csv
    --Make sure, here the utility will be inserting the data into TEST_TABLE only.
    
  2. mysql コマンドにパイプすることにより、一括挿入 SQL を送信します。

    mysql -u <user-name> -p<password> -h <host-address> <database-name> < TEST_TABLE_INSERT.SQL
    --Here file TEST_TABLE_INSERT.SQL will have bulk import sql statement like below
    --insert into TEST_TABLE values('1','test1','2017-09-08'),('2','test2','2017-09-08'),('3','test3','2017-09-08'),('3','test3','2017-09-08');
    
于 2017-09-29T07:59:42.880 に答える
1

同様の問題に遭遇しました。私は実際にデータベースをインポートしようとしていましたが、条件は同じである必要があります.いくつかのテーブルのサイズ、むらのある接続、および適度な再開機能への欲求のために、ロードデータを使用する必要がありました.

local オプションを指定しないとそのエラーが発生する可能性があるという chris finne に同意します。何度も適合して開始した後、Maatkitの mk-parallel-restore ツールが必要なものをいくつかの優れた追加機能とともに提供してくれることがわかりました。ユースケースに最適な場合があります。

于 2010-08-25T02:25:23.497 に答える