본문 바로가기
웹 개발/db

[mysql/error] ERROR 1064 (42000): You have an error in your SQL syntax 에러

by dani0312 2024. 1. 18.

◾에러 파악하기

✔️Background

Putty에서 서버에 접속하여 mysql을 설치하고 여러 가지 명령어를 입력하고 있다. 본문에서는 특정 상황이 아닌 mysql의  에러 1064(42000)번에 대해 포괄적인 원인을 이야기한다.

 

✔️에러 발생 상황

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INDENTIFIED WITH 'mysql_native_password' BY 'hanbit'' at line 1

 

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTIFIED BY 'hanbit' WITH GRANT OPTION' at line 1

 


◾에러 해결하기

위의 ERROR 1064 (42000) 는 mysql에 명령어를 입력하다보면 다양한 상황에서 자주 볼 수 있는 에러이다. `syntax` 에러는 말 그대로 문법 상의 오류이다. sql 명령어를 제대로 입력하였는지 확인해보아야한다

 

오타가 있는지 명령어를 제대로 사용하였는지 확인하고 다시 입력을 해보면 방금과 같은 에러는 뜨지 않고, 명령어를 실행한 결과를 보여주거나 다음 단계로 넘어간다.

 

명령어 오타 혹은 버전이 바뀌며 더 이상 사용되지 않는 명령어일 수 있다. 실제로 권한을 부여하는 명령어를 정상적으로 입력하였는데 실행이 되지 않았는데 알아보니 php8버전부터 바뀌었다고 한다. 그래서 바뀐 명령어로 해야 위의 에러가 뜨지 않았다. 

 

 

 


겪었던 에러

아래  명령어는 'root' 사용자가 모든 데이터베이스(*.*)와 모든 테이블에 대한 모든 권한을 가지도록 허용하며, WITH GRANT OPTION은 해당 사용자가 다른 사용자에게 권한을 부여할 수 있는 권한도 가지게 한다.

 

1. 바뀌기 전 명령어

GRANT ALL PRIVILEGES ON *.* TO '<유저이름>'@'<IP주소>' IDENTIFIED BY '<비밀번호>' WITH GRANT OPTION;

 

2. 바뀐 후 명령어

바뀐 후부터는 아래처럼 유저를 만들고 권한을 부여해야 한다.

 

CREATE USER '<유저이름>'@'<IP주소>' IDENTIFIED BY '<비밀번호>';
GRANT ALL PRIVILEGES ON *.* TO '<유저이름>'@'<IP주소>' WITH GRANT OPTION;

 

gpt에게 물어보니 아직 위의 명령어도(바뀌기 전 명령어라고 적은 것) 사용이 된다고 하는데 정확히 모르겠다. 버전에 따라 차이가 있는 듯 하니  1번을 해서 안되는 경우 2번으로 하면 될 듯하다. 

 

이와 관련해서는 아래 블로그에서 동일한 상황을 겪고 있으므로 참조하면 좋을 듯 하다.

https://javagwanjin.tistory.com/entry/MYSQL-%EC%9C%A0%EC%A0%80%EB%A7%8C%EB%93%A4%EA%B8%B0


/* 내가 추가한 코드 */ /* 내가 추가한 코드 끝끝 */