반응형

배경

 AWS EC2에서의 Ubuntu환경에서 Springboot로 만든 jar파일을 실행하려 했으나 미리 설치된 MySQL과 연동하는 도중에 아래의 오류가 생겼다.

문제

Error Log

java.sql.SQLException: Access denied for user 'root'@'localhost'
j.LocalContainerEntityManagerFactoryBean : Failed to initialize JPA EntityManagerFactory: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.exception.GenericJDBCException: Unable to open JDBC Connection for DDL execution

해결방안

 로그인하려는 plugin을 바꾸면 됨.

 

아래의 명령어로 root에 권한을 부여한다. 그리고 flush명령어로 권한들을 업데이트한다.

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
mysql> flush privileges;

하지만 위의 명령어로 해결이 되지 않을 것이다.

아래의 명령어를 적용한다.

$ sudo mysql -u roo

mysql> USE mysql;
mysql> UPDATE user SET plugin='caching_sha2_password' WHERE User='root';
//  plugin='mysql_native_password'로 해도 된다고 합니다.
mysql> flush privileges;
mysql> exit;

$ sudo service mysql restart

 

원인

 Ubuntu같은 시스템에서 MySQL은 디폴트값에 의해 UNIX auth_socket plugin을 사용한다고 합니다. 기본적으로 system user credentias에 의해 db_users사용이 인증이됩니다.

 하여튼 저 auth_socket을 통해 로그인해야하는데 그렇지 않아서 denied 된 거임. 그래서 로그인하는 plugin을 바꾸면 됩니다.

 

 

참고

1) ERROR 1698 (28000): Access denied for user 'root'@'localhost'

stackoverflow.com/questions/39281594/error-1698-28000-access-denied-for-user-rootlocalhost

 

2) ubuntu에서 mysql의 root계정이 로그안 안될때.

bscnote.tistory.com/77

반응형