2011-07-26 12 views
17

Czy ktoś wie, dlaczego pojawia się ten błąd podczas uruchamiania mysqlimport?mysqlimport: Błąd: 1045, odmowa dostępu

mysqlimport -u someone -pwhatever --columns=a,b,c,d,e bar /var/tmp/baz.sql 
mysqlimport: Error: 1045, Access denied for user 'someone'@'%' (using password: YES), when using table: baz 

Jednak ...

mysql -u someone -pwhatever 
Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 199 
Server version: 5.1.41-3ubuntu12.10 (Ubuntu) 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 

mysql> show grants; 
+------------------------------------------------------------------------------------------------------------+ 
| Grants for [email protected]%                     | 
+------------------------------------------------------------------------------------------------------------+ 
| GRANT USAGE ON *.* TO 'someone'@'%' IDENTIFIED BY PASSWORD '*BLAHBLAHBLAH' | 
| GRANT ALL PRIVILEGES ON `bar`.* TO 'someone'@'%'           | 
+------------------------------------------------------------------------------------------------------------+ 
2 rows in set (0.00 sec) 

mysql> 

Odpowiedz

20

OK, to okazuje się, że plik jest przywilej „globalny” przywilej, który najwyraźniej oznacza, że ​​nie można wybiórczo włączać go na niektórych baz danych, tabel. itd. Dlatego mój poprzedni oświadczenie grant na pasku * nie miał wpływu.

GRANT ALL PRIVILEGES ON `bar`.* TO 'someone'@'%' 

Musisz przyznać uprawnienia pliku na *.*:

GRANT FILE ON *.* to 'someone'@'%'; 

Hope this helps kogoś.

+0

Jeśli otrzymasz komunikat "ERROR 1221 (HY000): nieprawidłowe użycie DB GRANT i GLOBALNE UPRAWDOŚCI", po ustawieniu różnych parametrów, wróć do tego, co pokazuje ta odpowiedź: "GRANT FILE ON *. * Do użytkownika @ localhost;" - "uprawnienia PLIKU są globalne i nie można ich zastosować do pojedynczej bazy danych" –

4

mysqlimport to interfejs wiersza poleceń do rachunku LOAD DATA plik_we, dla których trzeba przywilej 'File' (poziom serwera).

Od LOAD DATA INFILE syntax:

Also, to use LOAD DATA INFILE on server files, you must have the FILE privilege. 
+0

So "GRANT WSZYSTKIE PRZYWILEJE" nie obejmuje przywilej plik? –

+2

Zapewniasz WSZYSTKIE PRZYWILEJE na poziomie bazy danych, podczas gdy uprawnienie PLIK znajduje się na poziomie serwera. – Bilal

+0

Ach tak, właśnie to wymyśliłem. Dzięki za pomoc! –

20

można uniknąć potrzeby dodatkowych przywilejów za pomocą parametru --local do mysqlimport:

--local, -L 

      Read input files locally from the client host. 
+1

Pracowałem dla mnie, a IMHO o wiele lepsze podejście niż przyznanie ważnego globalnego pozwolenia jednemu użytkownikowi – happyskeptic

13

Niektórzy zamiast zdecydować się na tego polecenia, omijając dodatkowy plik grantu.

mysql -u username -p <yourdbname> < yourfile.sql

+0

Ten sam błąd otrzymuję za pomocą tego polecenia. –

+1

jak to zrobić, aby działało na importowanie pliku csv? Czy po prostu przepisuję plik csv w formacie .sql, a następnie imprt go? lub mogę użyć czegoś takiego jak http://stackoverflow.com/a/18469353/2392358 'mysqlimport' – HattrickNZ

+0

@HattrickNZ również, że polecenie jest tylko wtedy, gdy masz instrukcje w pliku .sql. Jeśli masz .csv, domyślam się, że musiałbyś zrobić coś innego, np. Zamieścić w linku. – Rabiees

Powiązane problemy