Centos安装MongoDB
配置程序包管理系统
创建一个/etc/yum.repos.d/mongodb-org-4.2.repo
文件
[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc
您也可以.rpm
直接从MongoDB存储库下载文件 。下载按Red Hat / CentOS版本(例如7
),MongoDB 发行版本 (例如4.2
),架构(例如x86_64
)进行组织。奇数编号的MongoDB发布版本(例如 4.3
)是开发版本,不适合生产部署。
安装MongoDB软件包。
要安装最新的稳定版MongoDB,请发出以下命令:
sudo yum install -y mongodb-org
另外,要安装特定版本的MongoDB,请分别指定每个组件包,并将版本号附加到包名中,如以下示例所示:
sudo yum install -y mongodb-org-4.2.6 mongodb-org-server-4.2.6 mongodb-org-shell-4.2.6 mongodb-org-mongos-4.2.6 mongodb-org-tools-4.2.6
运行MongoDB社区版
配置数据目录
默认情况下,MongoDB使用mongod
用户帐户运行,并使用以下默认目录:
/var/lib/mongo
(数据目录)/var/log/mongodb
(日志目录)
➤ 如果通过程序包管理器安装,
将创建默认目录,并将这些目录的所有者和组设置为mongod
。
➤ 如果通过下载压缩包进行安装,
未创建默认的MongoDB目录。要创建MongoDB数据和日志目录:
sudo mkdir -p /var/lib/mongo
sudo mkdir -p /var/log/mongodb
默认情况下,MongoDB使用mongod
用户帐户运行。创建后,将这些目录的所有者和组设置为mongod
:
sudo chown -R mongod:mongod <directory>
使用非默认目录
要使用默认目录以外的数据目录和/或日志目录:
-
创建一个或多个新目录。
-
编辑配置文件,
/etc/mongod.conf
并相应地修改以下字段:storage.dbPath
指定新的数据目录路径(例如/some/data/directory
)systemLog.path
指定新的日志文件路径(例如/some/log/directory/mongod.log
)
-
确保运行MongoDB的用户有权访问一个或多个目录:
sudo chown -R mongod:mongod <directory>
如果更改运行MongoDB进程的用户,则必须 授予新用户访问这些目录的权限。
启动MongoDB
sudo systemctl daemon-reload
sudo systemctl start mongod
sudo systemctl daemon-reload
sudo systemctl enable mongod
重启和停止
sudo systemctl stop mongod
sudo systemctl restart mongod
使用mongo
[cuianbing@file-api ~]$ mongo
MongoDB shell version v4.2.18
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("fceeef68-0ba6-45a4-beef-134ffbc6d06b") }
MongoDB server version: 4.2.18
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
https://docs.mongodb.com/
Questions? Try the MongoDB Developer Community Forums
https://community.mongodb.com
Server has startup warnings:
2022-03-05T11:54:45.796+0800 I CONTROL [initandlisten]
2022-03-05T11:54:45.796+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2022-03-05T11:54:45.796+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2022-03-05T11:54:45.796+0800 I CONTROL [initandlisten]
2022-03-05T11:54:45.796+0800 I CONTROL [initandlisten]
2022-03-05T11:54:45.796+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2022-03-05T11:54:45.796+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2022-03-05T11:54:45.796+0800 I CONTROL [initandlisten]
2022-03-05T11:54:45.796+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2022-03-05T11:54:45.797+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2022-03-05T11:54:45.797+0800 I CONTROL [initandlisten]
---
Enable MongoDB's 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()
---
>
开放访问
默认情况下,MongoDB启动时将其bindIp
设置为 127.0.0.1
,该绑定到localhost网络接口。这意味着mongod
只能接受来自同一计算机上运行的客户端的连接。除非将此值设置为有效的网络接口,否则远程客户端将无法连接到mongod
,并且mongod
不能初始化副本集
- 在Linux上,
/etc/mongod.conf
使用程序包管理器安装MongoDB时会包含默认配置文件。- 在Windows上, 安装过程中包括默认配置文件。
<install directory>/bin/mongod.cfg
- 在macOS上,
/usr/local/etc/mongod.conf
从MongoDB的官方Homebrew分接头安装时会包含一个默认配置文件。
可以配置此值:
- 在MongoDB配置文件中,带有
bindIp
或 - 通过命令行参数
--bind_ip
警告:在绑定到非本地主机(例如,可公共访问)的IP地址之前,请确保已保护群集免受未经授权的访问。
认证授权
MongoDB权限
-
数据库用户角色:read、readWrite
read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库 -
数据库管理角色:dbAdmin、dbOwner、userAdmin
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除 -
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限
-
备份恢复角色:backup、restore
-
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。 -
超级用户角色:root
root:只在admin数据库中可用。超级账号,超级权限
注意:这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
MongoDB 服务器进程默认启动后,并无任何认证机制,即任何用户都可随意连接数据库进行读写操作。MongoDB 有个比较特殊的数据库 admin,专门用来存储数据库管理员信息的。在 MongoDB 里是有不同的角色的,每种角色只能拥有相应的权限,用户也能自定义角色。