环境:
Centos7.4 + Python3.5 + MongoDB 4.0.0
安装(官方文档基本写得很清楚):
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/
MongoDB权限认证说明(希望能说明白):
- MongoDB安装后默认不开权限认证
- MongoDB分为管理员数据库(admin)和普通数据库(自己命名,通过use命令)
- MongoDB默认没有超级管理员账号,所以要先添加超级管理员账号,再开启权限认证。
> use admin
> show collections
> db.createUser(
{
user: "admin",
pwd: "xxxxxxxxxxxxxxx",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
4.开启权限认证
4.1.sudo vim /etc/mongod.conf
4.2.取消security的注释,加上 authorization: enabled
security:
authorization: enabled
4.3.重启服务:systemctl restart mongod.service
- 管理admin数据库的用户只能在admin里面创建;管理其它数据库的用户既可以在admin数据库创建也可以在本身数据库创建。
在admin创建的管理stu_manage的用户
> db.auth('admin', 'admin')
1
> db.createUser({
... ... user: 'hongxin',
... ... pwd: 'hongxin',
... ... roles: [ { role: "dbOwner", db: "stu_manage"}]
... ... })
Successfully added user: {
"user" : "hongxin",
"roles" : [
{
"role" : "dbOwner",
"db" : "stu_manage"
}
]
}
在stu_manage创建的管理stu_manage的用户
> use stu_manage
switched to db stu_manage
> db.createUser({
... ... ... user: 'hongxin',
... ... ... pwd: 'hongxin',
... ... ... roles: [ { role: "dbOwner", db: "stu_manage"}]
... ... ... })
Successfully added user: {
"user" : "hongxin",
"roles" : [
{
"role" : "dbOwner",
"db" : "stu_manage"
}
]
}
比较:
1.账户密码及角色可一致(红色划线),类似python的包名
2.可通过 show users 查看用户有哪个数据库创建
- admin创建的,需在admin进行验证后,再切换到stu_manage才能进行操作;stu_manage创建的,直接在 stu_manage 验证后即可操作.
基本使用(命令行):
https://www.jianshu.com/p/a4e94bb8a052
基本使用(Python):
Python操作我用的是Pycharm,Pycharm里面有个查看数据的插件,叫 "Mongo Explorer", 个人用起来还可以。
新建连接(只标出重点):
label: 链接名
User Database:数据库名
Authentication - Auth.database: 在哪个数据库创建的用户
Authentication - Auth.mechanism: 认证的协议,可通过 show users 查看
image.png
关于Python操作MongoDB,我这里有个自己的封装,觉得不错的可以点个start哦!
https://github.com/xiehongxin/MongoDBPackage
网友评论