java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
NetBean과 MySQL을 연동해 여러 가지 상호작용을 해야 하는데 계속해서 이런 오류만 발생했다.
열심히 해결 방법을 찾아보았다.
출처: https://shonm.tistory.com/387 [정윤재의 정리노트]
mysql 의 데이터베이스 mysql 로 들어가서
User 테이블의 정보를 확인 해 본다.
User 컬럼의 localhost 와 % 의 비밀 번호 정보가 다르게 입력 되어 있을 수 있다.
다를 경우
update user set Password=Password('05ghcjfl') where User='smadeco' and Host='%';
commit;
FLUSH PRIVILEGES;
해결해준다.
하지만 나는
password 필드가 없다고 나왔다.
그래서 user의 필드를 봐보니
이렇게 여러 개의 항목이 있었다.
이제 테이블에 들어있는 실제 항목을 보니 root는
이러한 항목을 가지고 있었다. 왜 정렬이 안 된채로 나오는 것인지는 잘 모르겠다.
비밀번호를 어떻게 수정하는지 전혀 모르겠다.
결국 이 방법으로는 해결하지 못했다.
GRANT ALL PRIVILEGES ON *.*TO 'user_id'@'%' IDENTIFIED BY 'user_password' with GRANT OPTION;
FLUSH PRIVILEGES;
나는 문법 오류가 나온다...
이유를 잘 모르겠다.
이 방법으로도 해결하지 못했다.
create user {username}@{ip} identified by '{password}';
username 과 password에 원하는 계정의 정보를 적어줄 수 있다.
ip는 특정 ip에서의 접속을 허용하는데 사용된다.
로컬에서 접근하기 위한 계정은 localhost를 기재하면 되고 외부에서 접근하는 것은 그에 맞는 ip 주소를 기재해주면 됩니다.
(ip에서 %는 모든 외부 주소에서의 접근을 허용한다는 의미이다.)
직접 만들어 보았다.
모든 스키마의 모든 테이블의 모든 권한을 사용자에게 부여
grant all privileges on *.* to {username}@{ip};
다음은 주로 root 계정에서 부여되는 권한이다.
실행을 해 주었다.
해당 ip에서 접근을 허용하지 않을 때
: https://manli000.wordpress.com/2015/01/04/java-sql-sqlexception-access-denied-for-user-idxxx-xxx-xxx-xxx-using-password-yes/
DB 비밀번호를 8자리 이상으로 설정하지 않는다면 발생할 수 있다고 합니다.
: https://shlee0882.tistory.com/286
stack overflow 여러가지 해결방법 링크
: https://stackoverflow.com/questions/11922323/java-sql-sqlexception-access-denied-for-user-rootlocalhost-using-password
참고 : https://sarc.io/index.php/mariadb/269-mysql-java-mysqlconn
실제로 mysql과의 연동에 문제가 있는 것인지 ,
아니면 코드에 문제가 있는 것인지 꼭 알아보고 그 후에 방법을 찾아보도록 하자.
원래는 NetBean에서 id를 바꾸어 입력하면 'root'@'localhost'에서 '입력한 id'@'localhost'로 변했었는데 왜 이렇게 메시지가 나오는 지 잘 모르겠다..
사실 NetBean의 코드 문제였던 걸까.. 문제가 맞았다.
그래서 test를 해보기로 했다.
참고 사이트에서 예제문장을 조금 바꾸어 실행해주었다.
그랬더니 실행이 되었다...
결국에는 내 실수였다.
내 무지함이 스스로 예외와 에러를 만들어내었다.
프로젝트에서 사용하는 코드이다 보니 서로 나누어 작성하는데 git, github등을 사용한 것이 아니라 서로 카카오톡을 사용하며 공유하다 보니 수정한 부분을 적어주는 데도 잘 알아보지 못하고 사용도 잘 못했던 것 같다.
다음부터는 이런 실수롤 하지 않도록 꼭 점검하고 확인하는 습관을 가지겠다.
그리고 코드의 주석에 대한 중요함을 몸으로 깨닫게 되었다.