MongoDB的权限认证是相对来说比较复杂的,不同的库创建后需要创建用户来管理。
本机中的MongoDB是docker 启动的,所以先进入docker的镜像中
docker exec -it mongodb bash
这样就进入到了镜像MongoDB中,然后输入命令连接MongoDB数据库 注意用户名密码以及数据库名称
mongo -u 123 -p 123 --authenticationDatabase space
出现这个界面说明登录成功
接下来开始创建数据库 创建表 创建索引的操作
//创建数据库 dyys
use dyys
//创建用户
db.createUser({
user: "123",
pwd: "123",
roles: [
{ role: "readWrite", db: "dyys" }
]
})
//创建表 orbit_basic_data orbit_data
db.createCollection("orbit_basic_data")
db.createCollection("orbit_data")
//为上面两个表的_id字段新增唯一索引
db.orbit_basic_data.createIndex({ "_id": 1 }, { unique: true })
db.orbit_data.createIndex({ "_id": 1 }, { unique: true })
//为orbit_basic_data表中字段 orbitName添加普通索引
db.orbit_basic_data.createIndex({ "orbitName": 1 })
//查看表中的所有索引
db.orbit_basic_data.getIndexes()
//删除某个索引 这里的 "orbitName_1" 是索引的名称。请注意,MongoDB 的索引名称通常由字段名和排序方式组成。
db.orbit_basic_data.dropIndex("orbitName_1")
当然 一般我们实际使用时,需要进行挂载,因为不挂载的话每次关机后 docker下镜像都会删除所有数据,导致数据库丢失。所以可以用下面的命令进行挂载启动(centos中)
docker run --restart=always --name mongo -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=root -v /home/mongo/docker-data/27017/db/:/data/db -d mongo:4.4.10
-e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=root
指定了当前镜像的用户名密码为root root
-v /home/mongo/docker-data/27017/db/:/data/db
指定将数据挂载到宿主机-v /home/mongo/docker-data/27017/db目录下
这样当我们再次启动的时候,也不会导致数据库丢失
连接数据库
mongo -u root -p root
创建数据库
use dyys
创建用户并授权
db.createUser({
user: "dyysuser",
pwd: "dyyspassword",
roles: [
{ role: "readWrite", db: "dyys" }
]
})
退出mongo
quit()
即可