해당 글은 도움이 되면 좋지만 단순히 저의 화를 식히기 위해 쓰는 글임을 알립니다.
학교 과제로 웹서비스를 개발하게 되었다. 개발을 얼추 마치고 제공된 서버에 배포를 하려고 하는데, 어라라 디비 연결을 못한다.
뭐가 문제인고 보니 권한 설정이 안되어 있는 것이었다.
흔히 서버에 SSH 연결을 할 때 '주소'@'user' 형식으로 접속을 한다. 하지만 DB는 괜히 사람 헷갈리게 'user'@'주소'에 권한을 부여한다. 따라서 내가 localhost에 있는 root다 하면 'root'@'localhost'가 되는 것이다. 근데 또 여기서 웃긴게 'root'@'%'는 어떤 주소에서 접근하든 root로만 접근하면 그에 따른 권한을 부여하겠다는 것인데, 이게 또 'root'@'localhost'는 예외다. root인 경우 사실 딱히 권한을 부여할 것도 없지만, 만약 user가 nonroot라면 상황은 달라진다. 일반 유저로 show grants sql을 날리면 나에게 부여된 권한을 조회할 수 있는데, 이때 'username'@'%'로 나와있는 것을 확인하고 권한문제는 아니라고 생각할 수 있어서 많은 시간을 허비할 수도 있다. 더불어 에러코드도 비번을 틀렸을때와 동일하여 id 비번만 계속 쳐다보게 된다. 웃긴건 또 외부 서버에서는 접속이 가능해서 이게 무슨일인가 싶었다.
결론은 조교 문제.
Gradle로 넘어가보자. 또 과제를 하고 있는데, 이번엔 웹 어플리케이션은 아니고 간단한 소켓 채팅 프로그램이다. 그냥 소프트웨어 프레임워크가 궁금해서 이번 과제에 Java Swing을 사용하였고 의존성을 위해 Gradle을 사용했다. 초반에는 build.gradle 설정에 많은 시간을 할애하지 않았다(Swing이 너무 처음이었기 때문). 근데 웬걸, 나름 개발을 해놓고 jar파일을 생성해보니 gradle run을 할 때 잘 돌아가던 것이 java -jar app.jar를 돌리면 안돌아가는 것이다. 계속 찾아보았으나 run은 되는데, build 후 돌아가지 않는다는 이야기는 없었다.
에러는 아래와 같다.
계속 MigLayout이 없다는데, 아니 gradle run은 멀쩡했단 말이다. 계속 검색을 해도 안나와서 설마 버전 문제인가 하고 MigLayout 버전만 계속 바꿨지만 아무 소용 없었다(지금 생각하니 그만한 뻘짓도 없었다). 결국 build.gradle 파일의 문제인것을 인식하고 찾아보았는데, 아래의 문구가 문제였다.
위 설정은 실제 관련 검색을 하면 가장 많이 나오는 글이다. 근데 계속 from(configuration...)에서 에러가 났다. 실은 위 에러가 난 것은 이 줄을 제거해서인데, 어쩌겠는가 에러가 나는 것을(그리고 실제로 없이 돌리는 경우도 있었다.) 그리고 더 웃긴 것은 MigLayout관련 줄을 없애고 돌리면 lombok은 또 잘만 돌아간다. 그래서 더 헷갈렸던 것 같다.
아무튼 결론은 이걸 아래와 같이 바꿔주면 된다.
근데 또 이걸 알려주는 글은 많이 없다. 대부분 아래와 같이 하라고 나와있는 경우가 많은데 아래와 같이 해도 에러가 난다.
하여간 Gradle도 참 어려운 것 같다.
징징 끝!