2012-12-14 43 views
5

Bir tablodaki verileri bir TSV dosyasındaki değerlerle değiştirmek için mysqlimport kullanıyorum. Her şey gayet iyi çalışıyor (veriyi DB süper kullanıcısı adı ve şifresini kullanarak alıyor), bu yüzden şimdi onu kilitlemek istiyorum, böylece veritabanı kullanıcısı ithalatı yapmak istediğim tek tabloyu etkileyebilir.Yük verisini kullanmak için kullanılabilecek minimum veritabanı ayrıcalıkları:

numaralı dosyaya DOSYA vermem gerektiğini biliyorum. "LOAD DATA INFILE" işlevini kullanmak için, ancak veritabanında verebileceğim minimum izinler kümesini bulmakta zorlanıyorum.

Denedim;

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

Ama mysqlimport çalıştırdığınızda bu bana bir hata verir;

mysqlimport: Error: Access denied for user ... 

kimse sadece ilgili tablo bu kullanıcı tarafından değiştirilebilir, böylece veritabanını izole etmek mümkünse biliyor, yoksa mysqlimport mümkün kılmak için onlara daha geniş erişim sağlamak zorunda yapar mı?

+0

Biliyorsunuz 'FILE'' ALL' içinde DEĞİLDİR? Biraz yanıltıcı. Daha sonra, bir erişim reddedilirse, bundan önce kullanıcı adı, ana bilgisayar veya şifre üzerinde başarısız olur. – Wrikken

+0

Mümkün yinelenen [MySQL'de yük veriyi engellemek için erişim reddedildi] (http://stackoverflow.com/questions/2221335/access-denied-for-load-data-infile-in-mysql) – blo0p3r

cevap

2

Şüphesiz, DOSYA doğru bir veritabanına bağlı değil, INFILE işlemlerini gerçekleştirmek için gereken genel bir Mysql hakkıdır.

Ben en azından damlasına izinlere sahip bir veritabanı kullanıcısı kullanmadan bir tablodaki verileri değiştirmek için mysqlimport kullanmak ve herhangi bir tablo oluşturmak mümkün olduğunu sanmıyorum, http://dev.mysql.com/doc/refman/5.1/en/privileges-provided.html#priv_file

1

kendi soruya cevap vermek için bakınız veri tabanı.

mysqlimport veri girer hangi tablo karar yüklüyoruz dosyasının adını taşır, bu yüzden bırakın ve herhangi tabloyu yeniden muktedir gerektiğini mantıklı değil, sadece masa istediğim Değiştirilebilmesi için.

Yazık.