2019-02-09

MongoDB 遠端連線 (ubuntu 18.04)

MongoDB 的安裝可以直接參考官方說明:
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/

這裡的 MongoDB 版本為 4.0.6。MongoDB 安裝完成後,只允許 localhost 的連線,而且沒有任何的權限限制,可以連上線的都是管理者權限。但不用太擔心,因為沒有設定的情況下,遠端是無法連線的。

如果使用 ssh 連線到主機,再使用 mongo client 管理,理應也不需要設定。但我希望可以用家裡的 mac 使用 Robo 3T 連線到主機管理,這個時候就需要做些設定,本篇是採用簡便的 Role-Based Access Control 做法。

1. 針對 admin 資料庫設定管理者。選用 admin 資料庫,並建立管理權限的管理者帳號,請參考 Enable Auth 。預設的權限角色請參考 Built-In Roles 。
use admin
db.createUser(
  {
    user: "myUserAdmin",
    pwd: "abc123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
  }
)

2. 先將服務停下來:
$ sudo service mongod stop

3. 設定 /etc/mongod.conf 裡的 net.bindIp。伺服器綁定的 IP,可將 net.bindIp 設定為 0.0.0.0 或使用 net.bindIpAll 設定為 true。亦或者設定為 Server 實際使用的 IP 及 127.0.0.1。
net:
  port: 27017
  bindIp: 127.0.0.1,157.23.???.???

4. 設定 /etc/mongod.conf 裡的 security.authorization 為 enabled,啟用帳密限定連線。
security:
  authorization: enabled

5. 啟動服務:
$ sudo service mongod start

6. 連線時,需要輸入帳號及密碼
$ mongo -u myUserAdmin -p abc123

如此就可以透過 Robo 3T 從遠端連線管理 MongoDB 了。

另外,可以參考這篇使用 ufw 防火牆去限定連線來的 ip。記得要開啟必要的 ports:
$ sudo ufw allow OpenSSH
$ sudo ufw allow from 你個人電腦的IP to any port 27017
$ sudo ufw allow http
$ sudo ufw allow https







1 則留言:

Shinder 提到...

遠端連線記得加 --authenticationDatabase admin
例如:
mongo "mongodb://your_server/your_db" -u username -p password --authenticationDatabase admin

FB 留言