【使用MongoDB之前要做的身份验证设置】

我想在Node.js中使用mongoDB,所以我在查找时发现很多文章都提到了”确保进行良好的安全设置”,所以我整理了一下我实际所做的事情。

如果这对您有所帮助,我会很高兴的。


首先,找不到描述设置的文件。

尽管 MongoDB 已安装,但无法找到 usr/local/etc/mongod.conf 文件。很可能以前我是通过其他方式安装的,而不是使用 brew。

所以,要使用通过brew来获取mongo的开源资源mongo-Community,需要执行以下命令。
brew install mongodb-community
这样,usr/local/etc/mongod.conf文件就创建完成了。

2,さっそく設定ファイルにセキュリティ強化のための設定を追記しいく

先程作成したmongod.confに追記する。

・接続を許可するIPアドレスを指定する。
・port番号をデフォルトの27017から変更する。
・mongoDBの認証機能をONに設定する。

bindIp: 127.0.0.1 
port: xxxxx
security: 
     authorization: enabled

当你完成这些步骤后,重新启动一下。
使用brew服务重新启动mongodb-community。

连接。(如果bindIp为127.0.0.1,端口为40000)
mongo –host localhost –port 40000

为每个数据库设置访问限制。

さらにセキュリティを高めるために、各DBにアクセスできるuserを作成していく。

创建一个可以访问进行用户管理的管理员的用户。
创建一个可以访问新创建的数据库的用户。

>mongo --host localhost --port 40000 //接続
>use admin //DB切り替え
>db.createUser(
  {
    user:"「作成したいユーザー名」",
    pwd:"「パスワード」",
    roles:[
       { 
           "role" : "root",
            "db" : "admin" //roleを割り当てるDBを選ぶ
       }
    ]
  } 
)
>db.createUser(
  {
    user:"「作成したいユーザー名」",
    pwd:"「パスワード」",
    roles:[
       { 
           "role" : "dbAdmin", //DB管理権限
            "db" : "newDatabase"
       }
    ]
  } 
);

确认MongoDB的安全性是否正常工作。

如果出现以下错误,则表示数据库的访问权限正在起作用。

name@MBP~% mongo --host localhost --port 40000 
>use admin
>db.system.users.find()
Error: error: {
    "ok" : 0,
    "errmsg" : "command find requires authentication",
    "code" : 13,
    "codeName" : "Unauthorized"
}

如果无法连接成以下的感觉,则可以认为端口号或IP地址设置已生效。

name@MBP~% mongo

MongoDB shell version v4.4.3
connecting to: mongodb://127.0.0.1:27017/? ~
Error: ~
connect@src ~
@(connect):2:6
exception: connect failed
exiting with code 1

【困境】

由于我明确设定了端口并正确输入了命令,但仍然无法连接!因此,我将提供解决方法。

结论:在端口更改之前,有一个正在运行的进程。

1. 请确认Mongo是否在预期的端口上运行。

name@MBP~% sudo lsof -i -P | grep "LISTEN"
//動いていれば以下のようになる。
mongod ~ name ~  IPv4 ~ TCP localhost:40000 (LISTEN)

在我的情况下,由于在port变更之前有一个正在运行的进程,所以我执行了进程终止操作,然后重新启动了mongo-community。

name@MBP~% brew services restart mongodb-community

我现在可以连接了。

【附加信息】
可以通过使用-dbpath选项来指定数据库的存储位置。
可以使用-logappend选项将日志作为追加内容保存到指定的文件中。
通过以下方式,可以在指定端口上将数据文件保存到指定目录中。
mongod –dbpath ./data/db –port 40001
还可以将这些设置写入配置文件中,并根据配置文件的内容进行启动。

bannerAds