MongoDBのインストールと認証設定 (Ubuntu18.04,MongoDB 4.2.11)
为什么要进行认证设置?
关于身份认证设置,它是数据库安全的第一步,如果您参考账户管理和认证,会非常容易理解。
简单来说,
为了保护重要的信息资产
如果没有进行认证设置,情报资产就会暴露给他人,这对安全来说是非常严重的问题。
此外,在2015年发布的一篇题为《在互联网上发现的40,000个未受保护的 MongoDB 数据库》(日语翻译)的文章中,正如标题所说,它指出了有4万个 MongoDB 数据库没有进行认证设置。
由于现在已经是2020年,可以推测这个数字已经进一步增加。
由于 MongoDB 默认不进行验证设置,因此在安装时需要进行验证设置。
章节目录
-
- 使用apt安装MongoDB
- 进行MongoDB的认证设置(设置用户名和密码)
通过使用apt来安装MongoDB。
1.1 MongoDBのレポジトリをaptに登録する
由于Ubuntu 18.04的官方仓库无法安装最新版本,因此我们将使用MongoDB提供的仓库。
※※追記※※ 最新バージョンが変更しているため最新版のインストールは公式サイトを参照してください
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
gpg: key 68818C72E52529D4: public key "MongoDB 4.0 Release Signing Key <packaging@mongodb.com>" imported
gpg: Total number processed: 1
gpg: imported: 1
これはMongoDB リポジトリで使用される GPG キーをインポートしているコマンドです.
結果にimported: 1と表示されていればOKです.
接下来,将存储库信息添加到 apt。
$ echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
只需要一个选项:为了识别添加的存储库,还需要做些工作。
$ sudo apt update
这样你就完成了对仓库的注册。
MongoDBのインストール
使用apt命令执行安装。
$ sudo apt install mongodb-org
启动 MongoDB。
$ sudo systemctl start mongod
MongoDBのステータスを確認してActive(running)となっていれば無事起動完了です.
$ systemctl status mongod
● mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2020-10-28 02:49:10 UTC; 1 weeks 2 days ago
Docs: https://docs.mongodb.org/manual
Main PID: 17358 (mongod)
CGroup: /system.slice/mongod.service
└─17358 /usr/bin/mongod --config /etc/mongod.conf
MongoDB的安装已经完成。
接下来我们将进行MongoDB的认证设置。
2. MongoDB的身份验证配置
在安装完MongoDB后,通常情况下,任何用户都可以查看数据库的内容。
考虑到以后使用数据库时保持数据暴露的状态可能会让人感到不安,因此我们应该在最初阶段进行认证设置!
启用用户认证
首先,让我们从配置文件(config)中启用用户认证的设置。(默认情况下是禁用的)
请打开文本编辑器,通常配置文件位于/etc/mongod.conf。
如果打开,请复制以下内容,或者如果配置文件中有此条目,请进行以下更改。
$ sudo vim /etc/mongod.conf
我使用vim,但使用喜欢的文本编辑器也可以。
security:
authorization: enabled
2.2 设定超级用户(管理员)
首先,由于修改了设置文件,所以需要重新启动mongod。
$ sudo systemctl restart mongod
在中国无法识别你给的句子,请提供中文句子。
由于MongoDB没有固定的用户ID,因此超级用户是通过角色来确定的。在这里,我们将使用内置的root作为角色。
$ mongo
> use admin
switched to db admin
> db.createUser({user:"mongo"(※任意), pwd:"password"(※要変更), roles:["root"]})
Successfully added user: { "user" : "userName", "roles" : [ "root" ] }
用户和密码是可选的,没有问题。
现在用户名和密码的设置已经完成。
退出MongoDB后,尝试使用指定的用户名/密码登录。
退出MongoDB时
> exit
bye
指定用户名称和密码以连接至MongoDB。
因为上述中将用户名指定为userName,密码指定为password,所以在连接时应按以下方式进行。
$ mongo -u userName(ユーザ名)
MongoDB shell version v4.2.10
Enter password:
如果认证一切顺利,将会如下所示。
$ mongo -u mongo
MongoDB shell version v4.2.10
Enter password:
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("xxxxxxxxxxxxxxxxxxxxxxxxx") }
MongoDB server version: 4.2.10
Server has startup warnings:
2020-10-28T02:49:10.604+0000 I STORAGE [initandlisten]
2020-10-28T02:49:10.604+0000 I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2020-10-28T02:49:10.604+0000 I STORAGE [initandlisten] ** See http://dochub.mongodb.org/core/prodnotes-filesystem
---
Enable MongoDBs free cloud-based monitoring service, which will then receive and display
metrics about your deployment (disk utilization, CPU, operation statistics, etc).
The monitoring data will be available on a MongoDB website with a unique URL accessible to you
and anyone you share the URL with. MongoDB may use this information to make product
improvements and to suggest MongoDB products and deployment options to you.
To enable free monitoring, run the following command: db.enableFreeMonitoring()
To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
---
>
请尝试在提示符下输入以下命令。
> show dbs
admin 0.000GB
app 0.001GB
auth 0.001GB
config 0.000GB
demo 0.000GB
events 0.000GB
hosting 0.000GB
local 0.000GB
log 0.004GB
如果数据库显示正常,那就证明认证成功了。
另外,如果不指定用户名连接到MongoDB,会得到以下结果。
$ mongo
MongoDB shell version v4.2.10
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("xxxxxxxxxxxxxxxxxxxxxx") }
MongoDB server version: 4.2.10
> show dbs
>
若未经认证,数据库中的数据将根本无法显示,请您注意。
最后
这次我们从MongoDB的安装一直写到认证设置。这实际上是我的备忘录。很抱歉写得难懂。下次我想写一下从PHP连接到MongoDB的方法。
我参考的网站
-
- https://xn--o9j8h1c9hb5756dt0ua226amc1a.com/?p=3370
- https://qiita.com/h6591/items/68a1ec445391be451d0d