[root@mysql5-7 mongodb-6.0.4]# cat start.sh
#!/bin/bash
cd /opt/mongodb-6.0.4
mongod --dbpath /data/mongodb --logpath ./mongod.log --bind_ip=0.0.0.0 --fork
[root@mysql5-7 mongodb-6.0.4]# cat stop.sh
#!/bin/bash
cd /opt/mongodb-6.0.4
mongod --dbpath /data/mongodb --logpath ./mongod.log --shutdown
cat > /etc/yum.repos.d/mongodb-org-4.4.repo << EOF
[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://pgp.mongodb.com/server-4.4.asc
EOF
yum install -y mongodb-org
systemctl start mongod
故障分析 | MongoDB 5.0 报错 Illegal instruction 解决
仔细查找官方文档,可以看到安装MongoDB 5.0 版本确实需要依赖支持 AVX 指令集的 CPU
检查下我自己服务器的 CPU , 确实不支持 AVX (注意:若支持AVX指令集,flags字段会有打印 ‘avx’ 字符串):
结论
若需要安装或升级到 MongoDB 5.0 新版本,一定要提前确保自己的服务器 CPU 能否支持 AVX 指令集 架构,检查命令如下:
cat /proc/cpuinfo |grep avx
一般家用服务器和新出的服务器都支持 avx 指令集,但是老版本的和一些服务器的 cpu 不支持该指令集,建议使用4.4版本的mongoDB
mongo -u root -p 1233
show dbs
[Error] Executor error during find command :: caused by :: Sort operation used more than the maximum 33554432 bytes of RAM. Add an index, or specify a smaller limit.
32MB这个限制是在参数internalQueryExecMaxBlockingSortBytes
中控制。你可以在MongoDB的客户端上直接查看这个参数的值,执行以下语句:
db.runCommand({
getParameter: 1,
"internalQueryExecMaxBlockingSortBytes": 1
})
所以在4.3以上的版本,执行以下命令:
db.runCommand({
getParameter: 1,
"internalQueryMaxBlockingSortMemoryUsageBytes": 1
})
扩大排序内存的限制,例如扩大10倍至320M
db.adminCommand({setParameter:1, internalQueryExecMaxBlockingSortBytes:335544320})
超级管理员
# 进入 mongo
mongo
# 切换为 admin 用户
use admin
添加超级管理员账号
db.createUser(
{
user:"rootadmin",
pwd:"123456",
roles:["root"]
}
)
设置完成,可以通过指令 show users
查看是否设置成功。
开启验证权限
找到MongoDB
安装目录下的bin
目录中的mongod.cfg
文件,开启权限验证功能:
security:
authorization: enabled
创建pro
用户,并授予pro
用户check_pro
和sample_pro
2个库的管理权限和读写权限
db.createUser({user:"pro",pwd:"123456",roles:[{role:"dbAdmin", db:"sample_pro"},{role:"readWrite",db:"sample_pro"},{role:"dbAdmin", db:"check_pro"},{role:"readWrite",db:"check_pro"}]})
找到MongoDB
安装目录下的bin
目录中的mongod.cfg
文件,开启权限验证功能:
security:
authorization: enabled
data:
mongodb:
host: 127.0.0.1
username: 账号
password: 密码
port: 27017
uri: mongodb://账号:密码@127.0.0.1:27017/check_pro?authSource=admin
uri: mongodb://账号:密码@127.0.0.1:27017/check_pro?authSource=admin
查询所有
db.collectionName.find({});
查询+格式化显示
db.collectionName.find({}).pretty();
查询排序
db.collectionName.find({"userId":100012}).sort({"updateTime":-1});
更新符合条件的所有数据(注:使用前,先find执行,以确定更新的范围符合要求)
db.collectionName.update({"userId":233290,"shortName":"LCC"},{$set:{"money":"2000","freezeMoney":"0"}},{multi:true});
删除符合条件的所有数据记录(注:使用前,先find执行,以确定删除的范围符合要求)
db.collectionName.remove({"userId":100012});
删除所有数据但保留集合
db.collectionName.remove({});
删除数据及集合本身(慎用)
db.collectionName.drop();
新增集合及插入数据(没有集合=创建集合+插入新记录,有集合=插入新记录)
db.collectionName.save({"usid":123});
或
db.collectionName.insert({"uu":123});