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"}])
이후에 컬렉션과 데이터베이스 생성시 문제없이 이루어진다.
출처
'DATABASE' 카테고리의 다른 글
[ DATABASE ] - 워크벤치를 통해서 데이터 명세서 뽑아내기 (0) | 2022.06.08 |
---|---|
[ DATABASE ] - node.js에서 redis 사용 (0) | 2022.06.02 |
[ DATABASE ] - Redis 사용 (0) | 2022.06.02 |