5

mysqlimportを使用して、テーブル内のデータをTSVファイルの値に置き換えています。すべてが正常に機能している(DBスーパーユーザー名とパスワードを使用してデータをインポートする)ので、インポートを実行するデータベースユーザーが、置き換える単一のテーブルにのみ影響を与えることができるように、データをロックします。

にFILEを付与する必要があることはわかっています。「LOADDATAINFILE」(mysqlimportがラップする)を使用するためですが、データベースに付与できる最小限のアクセス許可のセットを見つけるのに問題があります。

私はもう試した;

grant FILE on *.* to ...
grant ALL on dbname.tablename to ....

しかし、mysqlimportを実行するとエラーが発生します。

mysqlimport: Error: Access denied for user ...

このユーザーが関連するテーブルのみを変更できるようにデータベースを分離できるかどうか、またはmysqlimportを可能にするために、より広いアクセスを許可する必要があるかどうかを誰かが知っていますか?

4

2 に答える 2

2

残念ながら、FILE権限はデータベースにバインドされていません。これは、INFILE操作を実行するために必要なグローバルなMysql権限です。

http://dev.mysql.com/doc/refman/5.1/en/privileges-provided.html#priv_fileを参照してください

于 2012-12-14T17:29:49.327 に答える
1

私自身の質問に答えるために、少なくともデータベースにテーブルをドロップして作成する権限を持つデータベースユーザーを使用せずに、mysqlimportを使用してテーブル内のデータを置き換えることはできないと思います。

mysqlimportは、ロードするファイルの名前を使用して、データが入るテーブルを決定します。したがって、置き換えたいテーブルだけでなく、任意のテーブルを削除して再作成できる必要があることは理にかなっています。

残念。

于 2013-01-04T18:18:00.270 に答える