MongoDB数据库常见问题_mongodb设置密码复杂度


**方案3:启动基于角色的登录认证功能**  
 在admin数据库中创建用户,如用户名supper,密码supWDxsf67%H(此处为举例说明,请勿使用此账号密码)。


1)在未开启认证的环境下,登录到数据库



[mongodbrac3 bin]$ ./mongo 127.0.0.1:27028 (此处修改了默认端口)
MongoDB shell version: 2.0.1
connecting to: 127.0.0.1:27028/test


2)切换到admin数据库



> 
> use admin  
>  switched to db admin
> 
> 
> 


3)创建管理员账号  
 账号不要设置为常见账号,密码需要满足一定的复杂度,长度至少八位以上,并包括大小写字母、数字、特殊字符混合体,不要使用生日、姓名、身份证编号等常见密码。



说明:MongoDB从V3版本开始取消使用addUser方法,采用db.createUser方法创建用户。



db.addUser(“supper”, “supWDxsf67%H”) 或
{ “n” : 0, “connectionId” : 4, “err” : null, “ok” : 1 }
db.createUser({user:“supper”,pwd:“supWDxsf67%H”,roles:[“root”]})
{
“user” : “supper”,
“readOnly” : false,
“pwd” : “51a481f72b8b8218df9fee50b3737c44”,
“_id” : ObjectId(“4f2bc0d357a309043c6947a4”)
}


管理员账号将在system.users中。



db.getCollectionNames()
[ “system.indexes”, “system.users”, “system.version” ]


4)验证用户是否创建成功



db.auth(“supper”,“supWDxsf67%H”)
exit
bye
结束进程,重启MongoDB服务。
./mongod --dbpath=/path/mongodb --bind_ip=10.0.0.1 --port=27028 --fork=true logpath=/path/mongod.log --auth &


**说明:**


* admin.system.users中将会保存比在其它数据库中设置的用户权限更大的用户信息,拥有超级权限,也就是说在admin中创建的用户可以对mongodb中的其他数据库数据进行操作。
* MongoDB系统中,数据库是由超级用户来创建的,一个数据库可以包含多个用户,一个用户只能在一个数据库下,不同数据库中的用户可以同名。
* 特定数据库(比如DB1)的用户User1,不能够访问其他数据库DB2,但是可以访问本数据库下其他用户创建的数据。
* 不同数据库中同名的用户不能够登录其他数据库,比如DB1、DB2都有user1,以user1登录DB1后,不能够登录到DB2进行数据库操作。
* 在admin数据库创建的用户具有超级权限,可以对mongodb系统内的任何数据库的数据对象进行操作。
* 使用db.auth()可以对数据库中的用户进行验证,如果验证成功则返回1,否则返回0。  
 db.auth()只能针对登录用户所属的数据库的用户信息进行验证,不能验证其他数据库的用户信息。


## 风险自查


如果您是MongoDB管理员,也可以使用以下方式检查是否有进一步的入侵行为:


* 查看MongoDB的日志是否完整,并确认执行删除数据库的源IP地址和时间、行为;
* 检查MongoDB帐户以查看是否存在未添加密码(admin)账户(使用db.system.users.find()命令);
* 检查GridFS以查看是否有人存储任何文件(使用db.fs.files.find()命令);
* 检查日志文件以查看谁访问了MongoDB(show log global命令);
* 您可以使用云安全中心应急漏洞功能一键核查。


## 2、MongoDB:安装后无法启动问题解决过程记录


## 1. 环境


Ubuntu 18.04;  
 MongoDB version v3.6.3;


## 2. 问题 & 解决


2.1. Unit mongod.service not found. 报错  
 报错



> 
> Failed to start mongod.service: Unit mongod.service not found.
> 
> 
> 


解决:  
 – 创建文件



sudo vim /etc/systemd/system/mongodb.service


– 追加文本



[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target
[Service]
User=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf
[Install]
WantedBy=multi-user.target


– 保存退出,再次启动发现还是报错。


## 2.2. NonExistentPath: Data directory /data/db not found., terminating 报错


报错



> 
> 2020-08-18T04:16:47.802+0000 I STORAGE [initandlisten] exception in  
>  initAndListen: NonExistentPath: Data directory /data/db not found.,  
>  terminating 2020-08-18T04:16:47.802+0000 I CONTROL [initandlisten] now  
>  exiting 2020-08-18T04:16:47.802+0000 I CONTROL [initandlisten]  
>  shutting down with code:100
> 
> 
> 


解决



sudo mkdir /data/db/


再次启动,问题解决。



sudo mongod


## Mongo数据库不设置用户权限,直接登录数据库


## MongoDB角色创建命令


1.创建超级管理员用户



db.createUser({user:‘root’,pwd:‘123456’,roles:[‘root’]}) Successfully added user: { “user” : “root”, “roles” : [ “root” ] }


2.查看创建的用户



db.system.users.find();


3.创建普通用户,有testdb数据库readWrite的权限



db.createUser({user:‘jim’,pwd:‘jim123456’,roles:[{role:‘readWrite’,db:‘testdb’}]})


默认mongo是没有用户认证的,如果要想让用户认证生效,需要重启mongo数据库实例 先关闭实例 mongod --shutdown -f /etc/mongod.conf 再加–auth启动实例 mongod --auth --fork -f /etc/mongod.conf


## 测试一下效果



[root@~]# mongo
MongoDB shell version v4.2.2
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { “id” : UUID(“709083d5-fe98-4b21-919d-7ffce4ced0e5”) }
MongoDB server version: 4.2.2

show dbs;
show collections;
Warning: unable to run listCollections, attempting to approximate collection names by parsing connectionStatus




![img](https://img-blog.csdnimg.cn/img_convert/1804cbf22fb77205b5f4a6c81410d93b.png)
![img](https://img-blog.csdnimg.cn/img_convert/9189ad0f490b40568ddae06561a6a1b0.png)
![img](https://img-blog.csdnimg.cn/img_convert/8236c6a4b4607668dce50ed2d278ab3b.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!**

ction names by parsing connectionStatus

[外链图片转存中…(img-6VePPTSy-1719231206181)]
[外链图片转存中…(img-3GrZH1kG-1719231206182)]
[外链图片转存中…(img-Xpn8Ui5U-1719231206182)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

  • 18
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值