文章目录
下载安装,启动
#下载 mongodb6
curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel80-6.0.3-rc2.tgz
#解压
tar -zxvf mongodb-linux-x86_64-rhel80-6.0.3-rc2.tgz
#将解压包拷贝到指定目录
#文件夹名可能不对
mv mongodb-linux-x86_64 /usr/local/mongodb
# 配置环境
export PATH=$PATH:mongodb6路径/bin
# 或者手动修改文件
vim /etc/profile
source /etc/profile
# 创建数据库、日志、进程、目录
# 注意和mongodb.conf保持一致
mkdir data
touch db
mkdir log
mkdir pid
# 启动mongodb,注意:如果你的数据库目录不是/data/db,可以通过 --dbpath 来指定。
./mongod
# 指定db文件路径启动
./mongod --dbpath=/path/mongodb
#以授权身份认证方式启动
./mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --fork --auth
# 自定义配置文件启动,新建mongodb.conf,里面配置路径。“fork: 以守护进程的方式运行MongoDB。
./mongod --config /usr/local/mongodb/conf/mongodb.conf --fork
conf下创建配置文件mongodb.conf
dbpath=/usr/local/mongodb/data/
#日志保存路径
logpath=/usr/local/mongodb/log/mongo.log
#进程描述文件
pidfilepath=/usr/local/mongodb/pid/mongo.pid
#日志追加写入
logappend=true
bind_ip_all=true
#mongo默认端口
port=27017
#操作日志容量
oplogSize=10000
#开启子进程
fork=true
#需要登录认证
auth=true
修改端口和ip如何启动命令登陆
mongodb6安装shell
#下载 mongoshell
curl -O https://downloads.mongodb.com/compass/mongosh-1.6.0-linux-arm64.tgz?_ga=2.99845018.504722044.1668826731-801243742.1663340239
#解压
tar -zxvf mongosh-1.6.0-linux-arm64.tgz
# 配置环境
export PATH=$PATH:mongoshell路径/bin
# 或者手动修改文件
vim /etc/profile
# 使用命令
./mongosh
查看数据命令
show dbs
show collections
db.集合名.find()
db.col.find().pretty() --结果格式更整齐
插入数据命令
-- 创建数据库
use DATABASE_NAME
--手动create创建不会消失,非临时;
db.createCollection("runoob")
-- 可以直接插入,默认创建集合
--默认只插入一条
db.runoob.insert({title: 'MongoDB 教程',
description: 'MongoDB 是一个 Nosql 数据库',
by: '菜鸟教程',
url: 'http://www.runoob.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
});
-- 插入多条数据
-- 报错一般都是,多条数据格式问题
db.runoob.insert(
[
{ "_id" : ObjectId("5dba9edaa7c8952dba6bcaef"), "_class" : "com.dataservice.model.AIJobFieldModel", "type" : "topics", "label" : "abc", "value" : "j3" },
{ "_id" : ObjectId("5dba9edaa7c8952dba6bcaf0"), "_class" : "com.dataservice.model.AIJobFieldModel", "type" : "topics", "label" : "abc", "value" : "j4" }
]
);
存在更新不存在插入
db.col.save({
"_id" : ObjectId("56064f89ade2f21f36b03136"),
"title" : "MongoDB",
"description" : "MongoDB 是一个 Nosql 数据库",
"by" : "Runoob",
"url" : "http://www.runoob.com",
"tags" : [
"mongodb",
"NoSQL"
],
"likes" : 110
})
更新数据命令
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
删除数据命令
-- 删除当前数据库
db.dropDatabase()
-- 删除集合mycol2
db.mycol2.drop()
创建认证
db.createUser({
user: 'wangmoumo',
pwd: '123456',
roles:[{
role: 'readWrite',
db: 'test'
}]
})
提示使用错误的mongo角色,则需要明白MongoDB的数据库角色来匹配规则(不同内置角色分配不同权限,类似云服务器中的入站规则角色)。MongoDB 在每个数据库上提供 内置的数据库用户和数据库管理角色
总的来说,错误如下:除了admin,其他的roles不能用 root,根据需要选择所想要的role
大致的内置角色如下
数据库用户角色:
read:提供用户读取指定数据库(提供读取所有非系统集合和system.js集合上的数据)
readWrite:提供用户读写指定数据库(提供read角色的所有权限以及修改所有非系统集合和system.js集合上的数据)
数据库管理角色:
dbAdmin:执行管理任务
dbOwner:数据库所有者可以对数据库执行任何管理操作
userAdmin:在当前数据库上创建和修改角色和用户的能力
集群管理角色:(管理整个系统,而不仅仅是单个数据库。这些角色包括但不限于副本集和分片集群管理功能)
clusterAdmin:admin数据库可用,最大的集群管理访问
clusterManager:对集群的管理和监控操作
clusterMonitor:对监视工具的只读访问权限
hostManager:监控和管理服务器
备份和恢复角色,admin数据库包括以下用于备份和恢复数据的角色:
backup:备份数据所需的最低权限
restore:视情况提供从备份还原数据所需的权限
所有数据库角色:(以下角色在admin数据库上可用,并提供适用于除local和 之外的所有数据库的权限config):
readAnyDatabase:admin数据库可用,(提供与除和read之外的所有数据库相同的只读权限)
readWriteAnyDatabase:admin数据库可用,(提供与除和readWrite之外的所有数据库读写的权限)
userAdminAnyDatabase:admin数据库可用,(提供与除和 userAdmin之外的所有数据库相同的用户管理操作访问权限)
dbAdminAnyDatabase:admin数据库可用,(提供与除和dbAdmin之外的所有数据库相同的权限)
超级用户角色:root (admin数据库可用)
内部角色:__system
修改认证
第一步:关闭认证重启
# 关闭配置里的认证属性
vim /usr/localhost/mongodb/conf/mongodb.conf
第二步:删除认证
# 重启mongodb
systemctl restart mongod
# 或者这样重启
./mongod --config /usr/local/mongodb/conf/mongodb.conf --fork
# 进入mongodb操作
use admin
db.system.users.find()
db.system.users.remove({})
第三步:添加新认证,打开配置里的认证
db.createUser({user:'userName',pwd:'passWord',roles:[{"role":"root","db":"admin"}]});
db.auth('userName', 'passWord');
# 打开配置里的认证属性
vim /usr/localhost/mongodb/conf/mongodb.conf