2011-07-26 5 views
17

mysqlimport를 실행할 때이 오류가 발생하는 이유를 아는 사람이 있습니까? 그러나 mysqlimport : 오류 : 1045, 액세스가 거부되었습니다.

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 

...

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> 

답변

20

확인, 파일 권한은 분명히 당신이 선택적으로 특정 데이터베이스에 테이블을 활성화 할 수 없음을 의미는 "글로벌"권한이라고 밝혀졌습니다. .

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

당신은 *.*에 FILE 권한을 부여해야합니다 :이 사람을 도움이

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

희망 줄에 내 이전 grant 문이 * 영향을 미치지 아니하는 이유 등 때문이다.

+0

다른 매개 변수를 설정 한 후에 'ERROR 1221 (HY000) : DB GRANT 및 GLOBAL PRIVILEGES의 사용법이 잘못되었습니다'라는 메시지가 나타나면이 답변의 내용으로 되돌아갑니다 : "GRANT FILE ON *. * to user @ localhost;" - "FILE 권한은 전역이며 단일 데이터베이스에 적용 할 수 없습니다" –

4

mysqlimport가 당신이 'FILE'권한 (서버 수준)을 필요로하는의 LOAD 데이터 INFILE 문에 명령 줄 인터페이스입니다. LOAD DATA INFILE syntax에서

:

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

그래서 "GRANT ALL PRIVILEGES"는 FILE 권한을 포함하지 않는다? –

+2

FILE 권한은 서버 레벨에있는 반면, 데이터베이스 레벨에서는 ALL PRIVILEGES를 부여합니다. – Bilal

+0

아, 네가 방금 알아 냈어. 도와 주셔서 감사합니다! –

20

당신은 mysqlimport에 위해 --local 매개 변수를 사용하여 별도의 권한에 대한 필요성을 방지 할 수 있습니다

--local, -L 

      Read input files locally from the client host. 
+1

나를 위해 일하고 IMHO는 한 명의 사용자에게 중요한 전역 권한을 부여하는 것보다 훨씬 나은 접근 방법입니다. – happyskeptic

13

일부 대신 추가 FILE 보조금을 건너 뛰는,이 명령을 선택합니다.

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

+0

이 명령을 사용하여 동일한 오류가 발생합니다. –

+1

어떻게 CSV 파일을 가져 오기 위해이 작업을 수행합니까? 그냥 .sql 형식의 CSV 파일을 다시 작성한 다음 imprt합니까? 또는 http://stackoverflow.com/a/18469353/2392358 mysqlimport' – HattrickNZ

+0

@HattrickNZ와 같은 것을 사용할 수 있습니까? 그 명령은 .sql 파일에 명령문이있는 경우에만 가능합니다. .csv가있는 경우 링크에 게시되는 것과 같이 다른 것을해야 할 것입니다. – Rabiees