安装社区版本:Mongodb 4.4
windows版本: win10
1 windows 安装mongodb
Mongodb 下载地址: https://www.mongodb.com/try/download/community
windwos直接下载,在安装界面配置数据目录和log目录,然后下一步即可。我们可以不安装MongoDB Compass.
安装完成后mongodb应该就已经在后台运行了。
测试访问mongodb默认端口(localhost:27017),出现以下界面说明mongodb已经安装成功。
使用mongodb compass 也可以进行测试,直接点击连接就可以使用该GUI工具
同样可以使用mongodb compass 创建对应地数据库。
2 连接mongodb 数据库
将mongodb 安装路径配置为windows 环境变量中。
比如默认安装目录为:C:\Program Files\MongoDB\Server\4.4\bin
进入windows 命令行,通过命令行启动mongodb服务器:
使用mongodb shell 连接数据库
mongo --host localhost --port 27017
然后就直接连接到我们1.1 中安装好地mongodb 实例了。执行show dbs 命令可以看到默认创建地数据库
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
3 配置mongodb
因为mongodb 默认运行环境为安全,即运行在内网环境中外网无法访问,所以安全模式是默认没有开启的。
此时mongodb 跑在默认端口,且没有管理员。所以我们这里需要对它进行一定地配置。
参照 https://docs.mongodb.com/manual/core/authentication/ 中进行配置
3.1 配置数据库管理员
1 首先配置mongodb创建一个管理员(具有所有数据库的读写管理权限及用户管理权限)
当mongodb安装后会默认创建admin数据库,在db shell 中执行以下命令:
use admin
db.createUser(
{
user: "MongoDBAdmin",
pwd: "admin89456",
roles:
[
{ role: "dbAdminAnyDatabase", db: "admin" },
{ role: "userAdminAnyDatabase", db: "admin" },
]
}
)
执行成功后将为admin将在admin数据库中创建 MongoDBAdmin 在这个User 且密码为admin89456。
关于role地参数类型:
1. 数据库用户角色:read、readWrite;(操作指定数据库权限)
2. 数据库管理角色:
dbAdmin:提供执行管理任务的能力,例如与模式相关的任务,索引和收集统计信息。该角色不授予用户和角色管理特权。
dbOwner: 数据库所有者可以对数据库执行任何管理操作。这个角色组合由授予的权限readWrite, dbAdmin和userAdmin角色。
userAdmin: 提供在当前数据库上创建和修改角色和用户的功能。由于该userAdmin角色允许用户向任何用户(包括他们自己)授予任何特权
3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4. 备份恢复角色:
backup:提供备份数据所需的最小特权
restore:
5. 所有数据库角色:
readAnyDatabase:提供与和read以外的所有数据库相同的只读特权。
readWriteAnyDatabase: 提供与readWrite所有数据库(local和除外)相同的特权config
userAdminAnyDatabase: 提供对用户管理操作的访问, 与和 userAdmin上的所有数据库相同
dbAdminAnyDatabase: 提供与dbAdmin所有数据库(local和除外)相同的特权config
6. 超级用户角色:root
参照官网配置说明 修改mongodb配置 安装路径\bin\mongod.cfg ,打开security地选项并重启:
security:
authorization: enabled
因为默认安装地情况下,mongodb 已经作为服务被安装到了windows中且服务名是MongoDB。
所以我们可以使用下面地命令重启mongodb:(这里cmd需要以管理员身份启动)
net stop MongoDB
net start MongoDB
这里再次尝试对数据库进行操作 mongodb提示没有权限
3.2 修改mongodb端口并启用ip限制
同样修改 安装路径\bin\mongod.cfg 中
net:
port: 28115
bindIp: 127.0.0.1
修改port 修改监听的默认端口
修改bindIp 可以实现系统网络过滤提供的访问控制
并重启mongodb
net stop MongoDB
net start MongoDB
3.3 创建业务数据库并配置
现在使用我们创建的管理员账号连接登录 并创建对应的业务数据库
mongo --username MongoDBAdmin --password admin89456 --authenticationDatabase admin --host localhost --port 28115
- authenticationDatabase : 验证数据库
- username: 验证用户名
- password: 用户密码
- host: mongodb地址
- port: mongodb端口
创建数据库->创建user_dev collection -> 插入测试数据
use dev
db.createCollection("user_dev")
db.user_dev.insertOne({"name": "test_user"})
这样就完成开发数据库的创建,测试collections的创建及测试数据导入
3.4 创建业务数据库管理员
创建业务数据库管理员
use dev
db.createUser(
{
user: "DevdbAdmin",
pwd: "admin42434",
roles: [ "dbOwner" ]
}
)
使用业务数据库管理员账户创建对应代码开发用户(仅具有该数据库读写权限):
mongo --username DevdbAdmin --password admin42434 --authenticationDatabase dev --host localhost --port 28115
use dev
db.createUser(
{
user: "DevdbUser",
pwd: "User85431",
roles: [ "readWrite" ]
}
)
使用开发用户进行测试
mongo --username DevdbUser --password User85431 --authenticationDatabase dev --host localhost --port 28115
use dev
db.user_dev.insertOne({"name": "dev_user"})
db.user_dev.find()
到这里就所有的环境已经准备完毕了
4 关于mongodb 运维
https://docs.mongodb.com/master/administration/