MongoDB7.0的安装
摘要
-
本文介绍Linux下MongoDB7.0的安装
-
MongoDB官方文档
-
本文基于
CentOS8(x86_64)
MongoDB 7.0新特性
-
2024年8月15日,MongoDB正式发布7.0版本,截止目前最新版本为7.0.6。
-
阿里云关于MongoDB7.0的特性说明,该文档中也包含MongoDB其它版本的特性说明
安装MongoDB
-
mongodb的安装方法可以查看官方文档
-
MongoDB下载地址,选择合适的版本、平台和包类型
1 | #下载MongoDB |
安装mongoDB时可能遇到的问题
-
- 启动mongodb服务时,提示
mongod: error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No such file or directory
- 启动mongodb服务时,提示
解决方法:
1 | wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz |
启动mongodb服务
-
命令参数启动
1 | mongod --port=27017 --dbpath=/mongodb/data --logpath=/mongodb/log/mongodb.log --bind_ip=0.0.0.0 --fork |
-
也可以将上面的参数写到配置文件中,如
/mongodb/conf/mongo.conf
文件,必须是yaml格式
1 | systemLog: |
-
将命令行参数直接转换为yaml:
--outputConfig
1 | $ mongod --port=27017 --dbpath=/mongodb/data --logpath=/mongodb/log/mongodb.log --bind_ip=0.0.0.0 --fork --outputConfig |
1 | net: |
删除
outputConfig: true
这一行,然后将其余内容复制到mongo.conf中
-
关于配置参数的详细信息可以查看官方文档
1 | # 启动mongo服务 |
shell客户端mongosh
-
从mongodb6开始不再支持mongo命令,而是需要使用mongosh命令,关于mongosh命令的使用可以查看官方文档
-
mongosh命令的使用方式与mongo命令基本一致
-
下载地址:mongosh下载地址
1 | # 下载安装包 |
-
mongosh常用命令
命令 | 说明 |
---|---|
show dbs 或 show databases | 显示数据库 |
use 数据库名 | 切换数据库,如果不存在创建数据库 |
db.dropDatabase() | 删除数据库 |
show collections 或 show tables | 显示当前数据库的集合列表 |
db.集合名.stats() | 查看集合详情 |
db.集合名.drop() | 删除集合 |
show users | 显示当前数据库的用户列表 |
show roles | 显示当前数据库的角色列表 |
show profile | 显示最近发生的操作 |
load(“xxx.js”) | 执行一个JavaScript脚本文件 |
exit 或 quit | 退出 |
help | 查看mongodb支持哪些命令 |
db.help() | 查询当前数据库支持的方法 |
db.集合名.help() | 显示集合的帮助信息 |
db.version() | 查看数据库版本 |
cls | 清屏 |
db.shutdownServer() | 关闭mongodb server端 |
安全认证
-
创建管理员
1 | # 设置管理员用户名密码需要切换到admin库 |
-
常用角色
权限名 | 描述 |
---|---|
read | 允许用户读取指定数据库 |
readWrite | 允许用户读写指定数据库 |
dbAdmin | 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile |
dbOwner | 允许用户在指定数据库中执行任意操作,增、删、改、查等 |
userAdmin | 允许用户向system.users集合写入,可以在指定数据库里创建、删除和管理用户 |
clusterAdmin | 只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限 |
readAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的读权限 |
readWriteAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的读写权限 |
userAdminAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的userAdmin权限 |
dbAdminAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限 |
root | 只在admin数据库中可用。超级账号,超级权限 |
-
创建数据库用户
1 | admin> use mydb |
-
重置用户密码
1 | mydb> db.changeUserPassword("mytest", "password") |
-
为用户添加角色
1 | # 假设已经创建了用户mytest,需要重新赋予其角色 |
-
删除用户的指定角色
1 | mydb> db.revokeRolesFromUser( "mytest" , [ |
-
删除用户
1 | mydb> db.dropUser("mytest") |
MongoDB启用鉴权
-
默认情况下,MongoDB不会启用鉴权,以鉴权模式启动MongoDB有两种方法
命令行参数增加
--auth
1 | mongod -f /mongodb/conf/mongo.conf --auth |
配置文件中加上如下内容
1 | security: |
-
启用鉴权之后,连接MongoDB的相关操作都需要提供身份认证
1 | mongosh --host=127.0.0.1 --port=27017 -u root -p password --authenticationDatabase=admin |
mongosh连接mongodb server端的方式
-
参数方式
1 | # 可以通过 mongosh --help 查看帮助 |
-
混合方式
1 | # ip+端口方式连接 |
-
uri方式
1 | mongosh mongodb://127.0.0.1:27017 |
-
如果只是连接本机的server端,而且端口为27017,可以省略host和port
1 | mongosh |
解决连接MongoDB时出现的 vm.max_map_count is too low 的问题
-
默认的
vm.max_map_count
值为65530
,如果需要开启MongoDB的分片功能,需要将vm.max_map_count
设置为较高的值,通常推荐为1048576
-
查看当前
vm.max_map_count
的值
1 | sysctl vm.max_map_count |
-
临时增加
vm.max_map_count
的值
1 | sysctl -w vm.max_map_count=1048576 |
-
永久增加
vm.max_map_count
的值
1 | # 修改/etc/sysctl.conf文件 |
-
重启MongoDB才会生效