[스프링 오류] invalid username/password; logon denied

2021. 4. 9. 23:45 Spring Framework/Spring 오류

프로젝트에서 데이터베이스 접속을 하려고하니 아래와 같은 오류가 발생하였다.

위와 같이 db에서 오류가 발생하면 db 프로그램에서도 동일한지 확인이 필요하다.

오라클 sql developer에서 새 접속을 실행해본다.

정보를 다음과 같이 입력하고 테스트를 입력한다.

동일하게 접속이 안된다.

다음과 같이 Run SQL Command Line을 클릭한다.

 

다음과 같은 명령어를 입력해준다.

먼저 오라클 db에 접속 후 아래 명령을 내릴 수 있다.

그렇기 때문에 conn system/1234로 데이터 베이스에 접근하자.

create user scott identified by "tiger";

그 후 다음과 같이 권한 부여 명령어를 입력해준다.

GRANT CONNECT, RESOURCE TO scott;

 

select username,account_status,lock_date from dba_users;

새로 추가한 게정이 OPEN된 것을 확인할 수 있다.

SQL developer에 추가가되는지 확인해보자

잘 되는 것을 확인할 수 있다.

위와 같이 진행해도되나 Sql Developer에서도 해결된다.

다음과 같이 다른 사용자 > 우클릭 > 사용자 생성으로 스키마 생성 후 좌측 상단에 + 모양을 클릭하여 접속을 시도해도된다.

 

우선 다음과 같이 기존 스키마에 접속 후 다른 사용자를 우클릭한다

사용자 생성에서 다음과 같이 설정해준다.

오라클은 대소문자를 구분안하므로 모두 모두 소문자로해도 상관없다.

부여된 롤 탭에서 다음과 같이 진행한다.

CONNECT와 RESOURCE를 체크한다.

할당랼은 다음과 같이 설정한다.

다음과 같이 생성된 것을 확인하고 적용을 클릭한다.

사용자가 생성된 것을 확인할 수 있다.

다음 버튼을 클릭하고

아래와 같이 정보 입력 후 테스트를한 뒤에 접속을 클릭한다.

그 뒤에 properties를 예제에 있는 것 과 같이 변경 후 톰캣을 구동하였으나 동일하게 안되었다.

그럼 어디가 문제인지 여러가지 시도를 해보자.

우선 데이터베이스를 연동하는 mybatis-context.xml을 확인해보자

다음과 같이 정상적으로 설정되어 있어 문제되는 부분은 확인되지않는다.

이번엔 db 정보가 있는 jdbc.properties 파일을 보도록하자

문제가 없어 보인다.

그럼 jdbc.properties에 있는 정보를 mybatis-context.xml에 대입한 후 정상 구동되는지 확인해보도록하자.

다음과 같이 수정해주었다.

	<bean id="dataSource"
		class="org.apache.ibatis.datasource.pooled.PooledDataSource">
		<property name="driver"
			value="oracle.jdbc.driver.OracleDriver" />
		<property name="url" value="jdbc:oracle:thin:@localhost:1521:xe" />
		<property name="username" value="system" />
		<property name="password" value="1234" />
	</bean>

/main/main.do로 접속시 다음과 같이 오류 메시지가 발생하였다.

ORA-00942: table or view does not exist

오류는 오류이지만 기분 좋은 오류이다.

기존 문제가 해결되었기 때문이다. 해당 오류는 필자가 해당 테이블을 아직 만들지 않았기 때문에 당연히 발생하는게 맞는 오류이다.

그럼 왜 jdbc.properties에서 안되는지 다시 한번 문제를 파헤쳐보도록하자.

이번엔 test.properteis라는 파일을 새로 마든 후 여기에 db 정보를 넣었다.

 

location 정보도 test.properties로 수정하였다.

수정 후 실행하니 logon 에러는 더 이상 발생하지않는다.

id,password가 맞다는 것이다.

그럼 이전 코드를 복사해서 붙여넣기해보자.

jdbc.properties에서 test.properties로 복붙 후 실행해보자.

동일하게 안된다

이전 jdbc.properties를 다시 보자

우측 하단에서 시작해서 좌측 상단으로 키보드 커서를 좌측으로 이동할거다

이동중 아래와 같이 공백이 들어간 것을 확인했다..

설마 저게 문제인지 한번 확인해보도록하자

공백을 지우고 다시 테스트해보자

로케이션을 jdbc.properties로 수정한다.

 

드디어 해결하였다..

저 공백 하나 때문에 이렇게 많은 시간을 들였다.

개발에 어려운 부분 중 하나가 이런 오류를 찾는게 힘들기 때문이다.

저 사소한 공백 하나를 찾기 위해 위와 같은 수많은 작업이 진행된다.

만약 위와 같이 아무런 문제가 없는 상황이 발생된다면 다음을 체크해보자.

 

1. 공백과 같은 오타 체크

2. project clean을 진행 후 동일한지 체크

 

해당 코드는 필자가 보고있는 예제코드이다 저런 예제코드 역시 체크없이 배포되어 위와 같은 문제를 야기하였다 그렇기 때문에 책에 있는 예제 코드를 너무 신뢰하지말고 문제가 있다면 그 문제를 하나하나 찾아보도록하자

 

출처 : namubada.net/219?category=777141