MongoDB

出自Gea-Suan Lin's Wiki
跳至導覽 跳至搜尋

MongoDB是一套NoSQL類型資料庫。

簡介

MongoDB是一套以JSON為資料儲存型態的資料庫。要注意軟件授權,在4.0.4之後的版本,以及4.1.5之後的版本為SSPL授權,社群一般不認可為開源軟件。

安裝

這邊安裝的是Percona包裝的版本(Percona Server for MongoDB 3.6,對應到官方的3.6版):

cd /tmp; wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb; sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb; sudo percona-release enable psmdb-36 release; sudo apt update; sudo apt install -y percona-server-mongodb-36; sudo apt clean

如果沒有授權條款的疑慮,可以安裝4.2版(Percona Server for MongoDB 4.2,對應到官方的4.2版):

cd /tmp; wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb; sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb; sudo percona-release enable psmdb-42 release; sudo apt update; sudo apt install -y percona-server-mongodb; sudo apt clean

或是比較新的6.0版本:

cd /tmp; wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb; sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb; sudo percona-release enable psmdb-60 release; sudo apt update; sudo apt install -y percona-server-mongodb; sudo apt clean

用戶端套件(mongosh指令):

sudo apt install -y percona-mongodb-mongosh; sudo apt clean

基本設定

MongoDB發現沒有使用者設定時會強制開放本地的anonymous登入,所以如果要關掉本地的anonymous操作,一定要先設定一組帳號與密碼。

這邊先建立root帳號:

echo -e 'use admin\ndb.createUser({user:"root",pwd:"password",roles:["root"]})' | mongo

然後在/etc/mongod.conf裏面啟動帳號認證:

security:
  authorization: "enabled"

接着重跑MongoDB:

sudo service mongod restart

最後可以測試anonymous模式與登入後的差異:

echo "show dbs" | mongo
echo "show dbs" | mongo -u root

再來是開放讓外部可以連,把bindIp127.0.0.1改成0.0.0.0

net:
  port: 27017
  bindIp: 0.0.0.0

連線

本地端的機器:

mongosh -u root

連到遠端的機器:

mongosh mongodb://db.example.com/ -u root

常用指令

在mongosh下面可以這樣跑:

show dbs
show collections
show tables
db.getCollectionNames()

外部連結