简介:由于mongodb数据的用户管理是基于单个库的管理,他的管理策略大概如下
如果验证了admin库的账户,那么所有的库都可以访问
如果验证了非admin库的账户,那么此权限只能访问当前库下的数据
步骤建议:
如果要对数据库进行账户设置,最好我们首先不要开启数据库验证,然后进入admin库,创建密码
退出添加 -auth 验证重启mongodb然后使用admin库的账户进行验证,如果通过那么进入其它库进行账户创建,完成后重新登录进行验证
验证如下:
启动mongod
mongod.exe --dbpath=E:\mongodb\db -auth -auth 开启用户验证,如果启动没有添加此参数那么用户验证将失败
首先进入admin库
use admin
查看当前数据的用户
show collections 能返回两个表
添加admin库的sa账户密码为sa
db.addUser(‘sa‘,‘sa‘)
ctrl+c 退出当前登录
重新登录并进入admin库和test库检查是否能够查询当前表
> use admin switched to db admin > show collections Mon Oct 13 17:11:01 uncaught exception: error: { "$err" : "unauthorized db:admin lock type:-1 client:127.0.0.1", "code" : 10057 } > use test switched to db admin > show collections Mon Oct 13 17:13:51 uncaught exception: error: { "$err" : "unauthorized db:test lock type:-1 client:127.0.0.1", "code" : 10057 }
验证admin库里面的sa账户是否能够查看admin库和test库的信息
> db.auth(‘sa‘,‘sa‘) 1 > show collections system.indexes system.users > use test switched to db test > show collections system.indexes system.users >
进入test库并创建用户test密码test
> use test switched to db test > db.addUser(‘test‘,‘test‘) { "updatedExisting" : true, "n" : 1, "connectionId" : 10, "err" : null, "ok" : 1 } { "_id" : ObjectId("543b80be1d60b11044c2fc59"), "user" : "test", "readOnly" : false, "pwd" : "a6de521abefc2fed4f5876855a3484f5" } >
ctrl+c退出重新登录,验证test账户能够访问test库和admin库
> db.auth(‘test‘,‘test‘) 1 > show collections system.indexes system.users > use admin switched to db admin > show collections Mon Oct 13 17:21:06 uncaught exception: error: { "$err" : "unauthorized db:admin lock type:-1 client:127.0.0.1", "code" : 10057 } >
验证admin库的admin帐号,看是否能查看admin库的信息
> use admin switched to db admin > db.auth(‘sa‘,‘sa‘) 1 > show collections system.indexes system.users >
PS:当验证用户的时候,如果返回1证明有此用户,如果返回0证明没有此用户 如:
> use admin switched to db admin > db.auth(‘sa‘,‘sa‘) 1
时间: 2024-10-19 21:39:33