- MongoDB 版本 v4.0.7
- 系统 Win10
注意:
要为数据库创建用户,必须先切换到相应的数据库:
要为数据库创建用户,必须先切换到相应的数据库:
要为数据库创建用户,必须先切换到相应的数据库:
#先切换
use 数据库名;
#再创建
db.createUser({})
超级管理员
设置 admin(给admin这个库在设置密码)
use.admin
db.createUser({
user: 'admin', // 用户名
pwd: '123456', // 密码
roles:[{
role: 'root', // 角色
db: 'admin' // 数据库
}]
})
设置完成,可以输入 show users
查看是否设置成功。
开启验证
找到 MongoDB 安装目录,打开mongodb.conf文件,找到以下这句
authu=true
重启 MongoDB
kill -9 mongo进程号
./mongod -f mongodb.conf
或者:
关闭
mongod --journal --shutdown -f /usr/local/mongodb/bin/mongodb.conf
启动
mongod --journal -f /usr/local/mongodb/bin/mongodb.conf
任务管理器界面
找到 MongoDB 服务,右键重新启动。
这时,我们可以打开 powershell 连接数据库:
输入 mongo:
显示连接成功,但是当我们输入其他指令时,不会提示没有权限,但是不会执行:
登录数据库
// 方式一
mongo
use admin
db.auth('admin', '123456')
// 方式二
mongo admin -u admin -p 123456
这时候我们就可以正常访问和操作数据了。
添加数据库用户
我们除了可以设置数据库的超级管理员以外,还可以给每个数据库设置单独的管理员。其只有操作单独数据的一定权限。
use test // 跳转到需要添加用户的数据库
db.createUser({
user: 'mts', // 用户名
pwd: '123456', // 密码
roles:[{
role: 'readWrite', // 角色
db: 'qidatas' // 数据库名
}]
})
常用命令
show users // 查看当前库下的用户
db.dropUser('testadmin') // 删除用户
db.updateUser('admin', {pwd: '654321'}) // 修改用户密码
db.auth('admin', '654321') // 密码认证
MongoDB 数据库默认角色
数据库用户角色:read、readWrite
数据库管理角色:dbAdmin、dbOwner、userAdmin
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager
备份恢复角色:backup、restore
所有数据库角色: readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、
dbAdminAnyDatabase
超级用户角色:root
pymongo连接需要认证的mongo
import pymongo
import random
db_mongo_attr = {
'host': 'xx.xx.xx.xx',
'port': 27017,
'database': 'qidatas',
'username': 'mts',
'password': '123456'
}
def db_conn(**kargs):
"""
:return:pymongodb db级别的实例
"""
dbs = pymongo.MongoClient(kargs['host'], kargs['port'], )
# dbs = pymongo.MongoClient("mongodb://user:pass@ip:port/databasename")
db = dbs[kargs['database']]
db.authenticate(kargs['username'], kargs['password'])
return db
db = db_conn(**db_mongo_attr)
col=db['20200624']
name_list = ['衬衣', '裤子', '鞋子', '帽子']
size_list = ['S', 'M', 'L', 'XL']
price_list = [100, 200, 300, 600, 800]
for i in range(10):
random_ = random.randint(2, 4)
col.insert_one({
'name': random.choice(name_list),
'size': random.sample(size_list, random_),
'price': random.sample(price_list, random_)
})
要注意的是mongodb的用户是与数据库一体的,所以是在数据库级别进行用户权限验证。
二.注意点
db.createUser({user:"cc",pwd:"cc777",roles:[{role:"dbOwner",db:"dataname"}]}) #为新库设置密码和角色
4. 退出控制台,用新的账号密码登录:mongo -u username -p password dbname(如果这边指定的是新的库,新的库对应的账号密码,就不用第五步)
5. 切换到刚才新建的数据库,db.auth("新数据库用户名", "新数据库密码" )
6. db。collectionName.insert({'1':1}) #随便指定集合,插入数据,要不然集合是空的,是不会把空的库展现在库列表中
3.在Gui中想创建辛苦,就直接指定认证的库为admin,admin的账号,密码就行,用其他的库认证的连接可以创建新的库,但是不能创建新的集合,相当于不能创建新的库,
因为mongo的库认证对应的是到每一个库当中的,而不是整个mongo库对应一个账户密码