cornarong
85
2021-11-15 21:37:11 작성 2021-11-15 23:21:28 수정됨
8
143

AWS ec2에 Spring Boot Jar파일 실행시키면 DB연결이 안됩니다.. 부탁드립니다!


안녕하세요.

이번에 개인 프로젝트를 완성하고 처음으로 AWS를 사용하여 직접 빌드 및 배포를 진행하고 있는데요.


현재 RDS따로 쓰지않고 AWS ec2 서버에 MySQL를 직접 설치했습니다.

필요한 계정 생성 후, 제 개인PC(로컬)에서 생성한 DB로 접속테스트 까지 완료 했습니다.


이렇게 문제 없이 진행되는가 싶더니 빌드까지 성공하고 jar파일을 실행시키면 에러가 발생합니다..

제가 지금까지 알아본 결과로는 DB접근을 못해서 그런것 같은데.. 확실치 않습니다ㅠㅠ


에러 내용은 아래와 같습니다. 

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

-> 서버에 성공적으로 전송된 마지막 패킷은 0밀리초 전입니다. 드라이버가 서버에서 패킷을 받지 못했습니다.


에러 로그는 아래와 같습니다.

2021-11-15 12:01:51.308  INFO 4234 --- [           main] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [name                                                                                          : default]
2021-11-15 12:01:51.490  INFO 4234 --- [           main] org.hibernate.Version                    : HHH000412: Hibernate ORM core version 5.4.32.Fi                                                                                          nal
2021-11-15 12:01:51.978  INFO 4234 --- [           main] o.hibernate.annotations.common.Version   : HCANN000001: Hibernate Commons Annotations {5.1                                                                                          .2.Final}
2021-11-15 12:01:52.342  INFO 4234 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2021-11-15 12:02:23.589 ERROR 4234 --- [           main] com.zaxxer.hikari.pool.HikariPool        : HikariPool-1 - Exception during pool initializa                                                                                          tion.

com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
        at com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174) ~[mysql-connector-java-8.0.26.jar!/:8.0.26]
        at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64) ~[mysql-connector-java-8.0.26.jar!/:8                                                                                          .0.26]
        at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:828) ~[mysql-connector-java-8.0.26.jar!/:8.0.26]
        at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:448) ~[mysql-connector-java-8.0.26.jar!/:8.0.26]
        at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241) ~[mysql-connector-java-8.0.26.jar!/:8.0.26]
        at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198) ~[mysql-connector-java-8.0.26.jar!/:8.0.26]
        at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138) ~[HikariCP-4.0.3.jar!/:na]
        at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:364) ~[HikariCP-4.0.3.jar!/:na]
        at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206) ~[HikariCP-4.0.3.jar!/:na]
        at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:476) ~[HikariCP-4.0.3.jar!/:na]
        at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561) ~[HikariCP-4.0.3.jar!/:na]
        at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115) ~[HikariCP-4.0.3.jar!/:na]
        at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) ~[HikariCP-4.0.3.jar!/:na]
        at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122)                                                                                           ~[hibernate-core-5.4.32.Final.jar!/:5.4.32.Final]
        at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcEnvironmentI                                                                                          nitiator.java:180) ~[hibernate-core-5.4.32.Final.jar!/:5.4.32.Final]
        at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:68) ~[hibernate-core-5.4.3                                                                                          2.Final.jar!/:5.4.32.Final]


application.properties 설정 코드 입니다.

# AWS
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/bookstore?serverTimezone=UTC&characterEncoding=UTF-8
spring.datasource.username=아이디
spring.datasource.password=비밀번호


DB를 요청하는 서비스도 DB가 설치된 서버도 모두 같은 ec2 서버라서 localhost로 접근해도 상관없다고 생각해서 사용했고 DB명과 계정ID, 비밀번호 확인 했습니다. 문제없고 MySQL도 정상적으로 구동중입니다.


DB 유저 호스트 결과입니다.



log나 코드가 추가로 필요하시면 댓글로 남겨주시면 바로바로 반영하도록 하겠습니다.

감사합니다.

0
  • 답변 8

  • 한국은역시자바
    943
    2021-11-15 22:01:35

    DB를 요청하는 서비스도 DB가 설치된 서버도 모두 같은 ec2 서버라서 localhost로 접근해도 상관없다고 생각해서 사용했고 

    --> ec2 인스턴스 들어가셔서 mysql로 접속시도해보세요.

  • cornarong
    85
    2021-11-15 22:07:36

    한국은역시자바

    지금 ec2서버에서 제가 접근하고자 하는 계정 "bookstore"로 정상적으로 로그인 되었고

    테스트로 SELECT VERSION(); 쿼리 실행하니까 정상적으로 나왔습니다..



  • 쿠잉
    4k
    2021-11-15 22:46:32

    ping localhost 해보시고


    netstat -antp | grep 3306 한 결과도 한번 올려주세요

  • cornarong
    85
    2021-11-15 23:09:29

    쿠잉


    ping localhost 결과입니다.


    netstat -antp | grep 3306 결과입니다.


    뭐가 문제일까요..

  • 쿠잉
    4k
    2021-11-15 23:30:47
    os가 어떻게 되세요
  • 종로3가
    416
    2021-11-15 23:34:07

    이렇게 해 보세요. 


    # vi /etc/mysql/mysql.conf.d/mysqld.cnf

    bind-address          = 127.0.0.1

    # bind-address            = 0.0.0.0

    그리고 나서, 

    systemctl restart mysql

  • cornarong
    85
    2021-11-15 23:55:27 작성 2021-11-16 00:05:27 수정됨

    쿠잉

    현재 리눅스 배포판 확인결과 입니다. 이걸 말씀하시는거 맞을까요?



    종로3가

    확인해본결과 

    제 설정파일 경로는 /etc/my.cnf 이곳에 존재하더라고요. 그래서 말씀하신데로

    0.0.0.0 -> 127.0.0.1로 수정하고 리스타트 후 재기동 하였씁니다.


    #######################

    설정파일에서 bind-address = 0.0.0.0 - > 127.0.0.1 로 변경 후

    mysql 재기동하고 프로젝트 빌드 다시해서 기동시켰습니다.

    그러고 나니 현재 오류가 이렇게 바뀌었습니다..


    에러 내용 아래와 같습니다.

    java.sql.SQLSyntaxErrorException: Access denied for user 'bookstore'@'localhost' to database 'bookstore'


    번역결과 -> java.sql.SQLSyntaxErrorException: 데이터베이스에 대한 사용자 'bookstore'@'localhost'의 액세스가 거부되었습니다.


    아래는 에러 로그 입니다.

    2021-11-15 14:53:15.780  INFO 5617 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
    2021-11-15 14:53:17.323 ERROR 5617 --- [           main] com.zaxxer.hikari.pool.HikariPool        : HikariPool-1 - Exception during pool initializa                                                                                          tion.
    
    java.sql.SQLSyntaxErrorException: Access denied for user 'bookstore'@'localhost' to database 'bookstore'
            at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120) ~[mysql-connector-java-8.0.26.jar!/:8.0.26]
            at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-java-8.0.26.jar!/:                                                                                          8.0.26]
            at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:828) ~[mysql-connector-java-8.0.26.jar!/:8.0.26]
            at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:448) ~[mysql-connector-java-8.0.26.jar!/:8.0.26]
            at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241) ~[mysql-connector-java-8.0.26.jar!/:8.0.26]
            at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198) ~[mysql-connector-java-8.0.26.jar!/:8.0.26]
            at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138) ~[HikariCP-4.0.3.jar!/:na]
            at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:364) ~[HikariCP-4.0.3.jar!/:na]
            at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206) ~[HikariCP-4.0.3.jar!/:na]
            at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:476) ~[HikariCP-4.0.3.jar!/:na]
            at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561) ~[HikariCP-4.0.3.jar!/:na]
            at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115) ~[HikariCP-4.0.3.jar!/:na]
            at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) ~[HikariCP-4.0.3.jar!/:na]
            at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122)                                                                                           ~[hibernate-core-5.4.32.Final.jar!/:5.4.32.Final]
            at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcEnvironmentI                                                                                          nitiator.java:180) ~[hibernate-core-5.4.32.Final.jar!/:5.4.32.Final]
            at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:68) ~[hibernate-core-5.4.3                                                                                          2.Final.jar!/:5.4.32.Final]
            at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35) ~[hibernate-core-5.4.3                                                                                          2.Final.jar!/:5.4.32.Final]
            at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:101) ~[hibernate-core-     








  • cornarong
    85
    2021-11-16 00:14:30 작성 2021-11-16 00:33:39 수정됨

    한국은역시자바

    쿠잉

    종로3가

    -------------------------------------------------------------------

    바뀐 오류를 덕분에 문제가 해결 되었습니다.
    답변들 정말 감사드립니다.


    mysql> GRANT ALL PRIVILEGES ON *.* TO 'bookstore'@'localhost' WITH GRANT OPTION;
    
    Query OK, 0 rows affected (0.02 sec)
    
    mysql> GRANT ALL PRIVILEGES ON bookstore.* to 'bookstore'@'%' WITH GRANT OPTION;
    
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> flush privileges;
    
    Query OK, 0 rows affected (0.01 sec)


    이렇게 SQL 3문장으로 해당 계정에 권한을 주니까 정상적으로 실행되었습니다.

    도움주셔서 감사합니다!!




  • 로그인을 하시면 답변을 등록할 수 있습니다.