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 則留言:
遠端連線記得加 --authenticationDatabase admin
例如:
mongo "mongodb://your_server/your_db" -u username -p password --authenticationDatabase admin
張貼留言