-
MongoDB install (linux - centos)개발 설치 2023. 5. 3. 17:04728x90
리눅스에 몽고db를 설치할 일이 생겼다.
(docker를 사용하지 않고 직접 설치)
리눅스 환경
centos7(64bit)
몽고db 버전
엔터프라이즈 버전까지는 필요가 없으니 커뮤니티(무료 버전)을 설치한다. : v6.0
설치하기
https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-red-hat/
몽고db 사이트에서 시키는데로 진행한다.
1. yum repo 생성
> vi /etc/yum.repos.d/mongodb-org-6.0.repo [mongodb-org-6.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/6.0/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc
2. 설치
> sudo yum install -y mongodb-org
설치된 파일들을 보면 mongodb-mongosh가 같이 설치 된 것을 볼 수 있다.
mongosh를 통해서 mongodb에 접속할수 있다.3. 몽고db 시작
> sudo systemctl start mongod # 시작
> sudo systemctl status mongod # 상태확인
> sudo systemctl enable mongod # 서버 재시작시 몽고db 자동 실행
> sudo systemctl stop mongod # 정지
> sudo systemctl restart mongod # 재시작4. 접속
https://www.mongodb.com/docs/mongodb-shell/
몽고db 6.0버전에서는 mongosh를 사용하면 접속이 된다.
> mongosh # 접속
5. db 확인 / 이동
> show dbs
admin, config, local + 현재 접속중인 test db가 있다.
> use newdb # db이동 (없을 경우 암시적 생성)
> show dbs6. 추가적인 부분
- use <db> 명령어를 통해 db로 이동을 했어도 show dbs에는 db가 표시 되지 않는다.
> show dbs
해당 이슈의 답변은 다음과 같다.
https://jira.mongodb.org/browse/SERVER-18313Databases are created and exist after inserting the first document into a collection in the database. Databases and collections are created implicitly; however, creating a database or collection object in your client does not create a database or collection. use <db> does not create new database files.
>> 요약
미숙한 영어로 간단히 요약하면 첫 데이터가 들어올때까지 db와 collection은 암시적으로 생성된다. use 명령어는 새로운 db파일을 생성하지 않는다.
데이터를 넣어주면 보인다.
- mongosh로 접속하면 계속 메세지가 나온다.
접속권한을 설정하라는 메세지이다.
1. 유저 생성
> use newdb
> db.createUser(
{
user: "abc",
pwd: passwordPrompt(),
roles: [ { role: "readWrite", db: "newdb" }]
}
)
> db.auth("abc", passwordPrompt())
2. /etc/mongod.conf 수정#security: 수정 security: authorization: enabled
수정 후 몽고db 재시작
> systemctl restart mongod
3. mongosh 확인mongosh로 접속시 위의 메세지가 사라졌고 show dbs와 같은 명령어의 사용이 불가능해졌다.
4. 접속방법이 2가지 있다.
- 접속할 때> mongosh --port 27017 -u "abc" --authenticationDatabase "newdb" -p
show dbs 확인 결과 접속한 유저가 권한을 가진 db만 보여진다.
- 접속 후> mongosh > use newdb > db.auth("abc", passwordPrompth())
mongosh 만으로 접속하면 test로 연결이 되는데 여기서 db.auth()를 하면 인증이 안된다. 이유는 1. 유저 생성에서 유저를 생성할 때 newdb에서 했기 때문이다. newdb로 이동해서 인증을 하면 접속이 된다.
- robo3t 같은 외부 툴에서 접속이 안된다.
1. 방화벽을 열자
# 방화벽에 열린 포트확인 > firewall-cmd --zone=public --list-ports # 포트 영구 등록 > firewall-cmd --permanent --add-port=27017/tcp # 방화벽 재시작 > firewall-cmd --reload
2. /etc/mongod.conf 수정
# network interfaces net: port: 27017 bindIp: 127.0.0.1 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
# network interfaces net: port: 27017 bindIp: 0.0.0.0
수정 후 몽고db 재시작
> systemctl restart mongod---------------
참조
728x90반응형'개발 설치' 카테고리의 다른 글
Rocky Linux 9 install (0) 2024.01.12