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()

外部连结