一般默认安装mongoDB到电脑的时候,默认数据库是没有设置管理员账号密码的。
所以为了安全问题,必须需要设置一下
mongoDB下载地址:下载地址
- 以系统管理员的方式运行powershell
- 进入mongo(不需要账号验证)
mongo
- 查看数据库 show dbs
show dbs
- 切换到admin数据库 use admin
- 创建超级管理员账户 db.createUser()
use admin
db.createUser({ user:"设置管理员账号", pwd:"设置管理员密码", roles:["root"] })
- 切换到blog数据库 use blog
- 创建普通账号 db.createUser()
普通账号可指定管理某个数据库
use blog
db.createUser({ user:"普通账号", pwd:"设置密码", roles:["readWrite"] })
PS:roles属性是设置该账号对mongoDB数据库的权限
mongodb 一共有哪些权限:
1. 数据库用户角色:read、readWrite;
2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4. 备份恢复角色:backup、restore;
5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6. 超级用户角色:root
// 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
7. 内部角色:__system
read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限
- 退出mongo服务
exit
- 卸载mongodb服务
1. 停止服务 net stop mongodb
2. mongod --remove
net stop mongodb
mongod --remove
- 创建mongodb服务
路径指定为数据库安装目录的data文件夹和log文件夹下的mongod.log文件
–auth 表示启动进入mongo需要账号密码验证
mongod --logpath="D:\数据库的路径\log\mongod.log" --dbpath="D:\数据库的路径\data" --install –-auth
- 重新启动mongodb服务
net start mongodb
- 重新进入mongo(需要账号验证)
mongo --host 127.0.0.1 --port 27017 -u "账号" -p "密码" --authenticationDatabase "admin"
- 在项目中使用账号连接数据库
这里以node的express框架的mongoose为例
超级管理员连接数据库
// 连接mongodb数据库
const mongoose = require("mongoose"); // 引入mongoDB操作模块
const dbUsername = "root"; // 数据库管理员连接账号
const dbPassword = "root"; // 数据库管理员的密码
const dbHost = "localhost"; // 数据库路径
const dbPort = 27017; // 数据库端口(可省略)
const db = "blog"; // 需要操作的数据库
// authSource=认证源
// (使用超级管理员账号连接其他数据库时的认证,普通账号不用设置)
// 数据库认证需要依赖于另外一个数据库名称
const dbAuth = "admin"; // 认证源
mongoose
.connect(`mongodb://${dbUsername}:${dbPassword}@${dbHost}:${dbPort}/${db}?authSource=${dbAuth}`, {
useNewUrlParser: true,
useUnifiedTopology: true,
useFindAndModify: false,
useCreateIndex: true,
})
.then(() => {
console.log("mongoDB数据库连接成功");
})
.catch((err) => {
console.log(err, "mongoDB数据库连接失败");
});
普通账号连接指定数据库
// 连接mongodb数据库
const mongoose = require("mongoose"); // 引入mongoDB操作模块
const dbUsername = "user"; // 数据库普通账号
const dbPassword = "123456"; // 数据库普通账号的密码
const dbHost = "localhost"; // 数据库路径
const dbPort = 27017; // 数据库端口(可省略)
const db = "blog"; // 需要操作的数据库
mongoose
.connect(`mongodb://${dbUsername}:${dbPassword}@${dbHost}:${dbPort}/${db}`, {
useNewUrlParser: true,
useUnifiedTopology: true,
useFindAndModify: false,
useCreateIndex: true,
})
.then(() => {
console.log("mongoDB数据库连接成功");
})
.catch((err) => {
console.log(err, "mongoDB数据库连接失败");
});
收. 这是根据自己的理解整理的笔记,希望对你有帮助