MongoDB默认没有权限,设置权限步骤如下:
1、以系统管理员的方式运行powershell
2、连接数据库mongo
在powshell命令行中输入mongo
3、查看数据库 show dbs
4、切换到admin数据库 use admin
创建普通用户前,需先创建超级管理员账户
5、创建超级管理员账号 db.createUser()
user表示账户名,pwd表示密码,roles是一个数组,表示角色(root为超级管理员, readWrite为普通用户)
注意:user、pwd、roles的写法都是固定的
6、创建普通账号,需要先切换到普通账户的数据库 use blog(blog是一个数据库)
exit表示退出数据库
7、卸载原有的服务
注意:MongoDB数据库默认没有设置权限,所以设置权限后,需卸载原先的服务
8、创建服务
命令:mongod --logpath=‘D:\MongoDB\Server\4.1\log\mongod.log’ --dbpath=‘D:\MongoDB\Server\4.1\data’ --install --auth
logpath:数据库的日志目录(安装mongodb的目录)
dbpath:数据库的存储目录(安装mongodb的目录)
9、判断服务是否安装成功
10、在项目中使用账号连接数据库
mongoose.connect(‘mongodb://用户名:密码@localhost:端口/数据库名’)
mongoose.connect('mongodb://miao:miao@localhost:27017/blog')
结束。。。。。。
当你:下一次在项目中创建一个新数据库出现权限问题时↓
有一点需要清楚,MongoDB的用户权限和数据库是绑定的。也就是创建一个新的数据库,并在数据库中插入数据的正确操作应该是需要创建与之对应的用户。
有如下几个步骤:
- 输入use admin,进入admin数据库,root用户需要在admin数据库中认证。
- 输入db.auth(‘root’,‘root’)超级用户进行认证
- 创建数据库(在 MongoDB 中,集合只有在内容插入后才会创建! 就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。)
创建账户时,一定要切换到对应的数据库,因为只有在对应的数据库创建的用户才是这个数据库的用户, 才能成授权, 但是创建用户的信息存放在admin库中,这里已经切换到runnoob数据库了
- 输入db.createUser({user: ‘run’,pwd: ‘run’,roles: [ { role: ‘readWrite’, db: ‘runoob’} ]} )创建miao用户,并为它指定数据库为runoob。
- 输入db.auth(‘run’,‘run’)切换认证用户。
- 输入db.aaa.insert({“name”:“miao”}),创建一条数据。
这才是创建一个数据库,并插入一条数据库的正确姿势,并且一定记住几点:
数据库和用户是绑定的,光创建一个超级用户并不能操作在其他新建的数据库中插入数据
在切换数据库时,先切换认证用户,不然会出现too many users are authenticated的错误。