DATABASE

[ mongodb ] - mongodb 비밀번호 까먹었을 때

algml0703 2022. 12. 4. 17:57
반응형

 mongodb 비밀번호 까먹었을 때 

 

터미널을 켜고 mongod.conf 파일을 열어본다. homebrew로 mongodb를 설치한 나의 경우 mongodb.conf 파일의 위치는 /opt/homebrew/etc 경로에 mongod.conf 파일이 존재한다.

> vi mongod.conf 명령어를 통해 해당 파일을 확인해보면 아래와 같은 내용으로 설정되어 있다.

이 파일 내용에서 맨 아래부분의 authorization을 disabled로 변경하여 주는데, 이는 우선 mongodb 계정 설정에 접속할 수 있도록 잠시 설정을 바꿔주는 것이다. 

명령어 > i 를 누르면 해당 파일 편집 모드가 된다.

이후 파일 내용을 아래와 같이 바꾸어 준다.

아래와 같이 바꾼 후 

esc 를 누른 후 > shift + : 를 누른다. 이후 맨 아래 표시가 : 가 나오면 wq!를 입력하여 해당 파일 내용을 저장 후 빠져나온다.

이후 아래의 명령어를 통해 mongodb를 재시작하여 준다.

> brew services restart mongodb-community

mongodb 서비스가 재시작되면 터미널에 mongo를 입력하여 mongodb에 접속한다.

mongodb에 접속 후

> use admin

admin 계정으로 변경하여 준다.

> db.system.users.find() 또는 db.system.users.find().pretty()

계정 정보를 보여준다.

> db.changeUserPassword("user명","새로운비밀번호")

비밀번호를 변경하여 준다.

> exit

mongodb를 빠져나온다.

제대로 변경되었는지 확인하기 위해 변경된 비밀번호로 mongodb에 접속하여 본다. 터미널에 아래의 명령어를 입력한다.

> mongo -u[계정/사용자명] -p[비밀번호]

접속이 원활하게 이루어지면 다시 mongod.conf 파일에서 authorization: enabled로 변경하여 준다

위에 까지 작업 후 아래의 명령어를 통해 다시 mongodb 재시작

> brew services restart mongodb-community

그런데 위와 같이 작업 후 mongodb compass로 해당 계정을 이용하여 데이터베이스를 생성하려 할 때 아래와 같은 에러가 발생한다.

not authorized on spring-basic to execute command 

이는 몽고 권한 관련한 문제이다. 위에서 계정 비밀번호를 설정해주었지만 해당 계정이 최고관리자가 아닌 계정이었던 것이 문제이다.

다시 mongodb 접속해서 아래의 과정을 통해 권한을 부여하여 준다.

> mongo -u[계정명] -p[비밀번호]

> use admin

> db.grantRolesToUser("admin", [{ role: "root", db: "admin"}])

이후에 컬렉션과 데이터베이스 생성시 문제없이 이루어진다.

 

출처

https://devel-lee.tistory.com/18

반응형