1)如何验证已经开启了安全验证 2)如何开启安全验证 3)开启失败的原因可能有哪些,如何排查和解决
版本:3.4.7
打开 mongo shell :(可将 mongo 的 bin 目录配置到环境变量中的 path 中直接启动 mongo)
C:\Users\xiaohao>mongo
MongoDB shell version v3.4.7
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.7
Server has startup warnings:
2019-08-29T10:56:07.116+0800 I CONTROL [initandlisten]
2019-08-29T10:56:07.116+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2019-08-29T10:56:07.117+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2019-08-29T10:56:07.117+0800 I CONTROL [initandlisten]
>
use admin
switched to db admin
> db.createUser(
{
user: "myUserAdmin",
pwd: "passwd",
roles: ["userAdminAnyDatabase"]
}
)
Successfully added user: { "user" : "myUserAdmin", "roles" : [ "userAdminAnyDatabase" ] }
##登录测试
> db.auth("myUserAdmin","passwd")
1
##失败返回0
mongdb 服务以安全认证的方式开启
以管理员方式启动 cmd
删除以前的 MongoDB 服务
sc delete MongoDB
打开计算机的服务管理界面,右键停止,刷新,就会发现该服务已经没了,关闭该界面。
创建带有安全认证的 MongoDB 服务
sc create MongoDB binpath="E:\MongoDB\bin\mongod.exe --dbpath E:\MongoDB\data --logpath E:\MongoDB\logs\mongodb.log --logappend --auth --service"
启动服务
net start mongodb
启动安全认证之后无登录进行连接:发现无权限查看数据库
C:\Users\xiaohao>mongo
MongoDB shell version v3.4.7
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.7
###无权限查看数据库
> show dbs
2019-08-29T12:21:17.295+0800 E QUERY [thread1] Error: listDatabases failed:{
"ok" : 0,
"errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
"code" : 13,
"codeName" : "Unauthorized"
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js:62:1
shellHelper.show@src/mongo/shell/utils.js:769:19
shellHelper@src/mongo/shell/utils.js:659:15
@(shellhelp2):1:1
退出 shell 进行用户登录:
mongo -u myUserAdmin -p passwd localhost:27017/admin
登录成功返回信息,并能进行数据的操作
C:\Users\xiaohao>>mongo -u myUserAdmin -p passwd localhost:27017/admin
MongoDB shell version v3.4.7
connecting to: mongodb://localhost:27017/admin
MongoDB server version: 3.4.7
###测试是否有权限查看数据库
> show dbs
admin 0.000GB
local 0.000GB
recommender 0.191GB
test 0.000GB
开启安全认证之后,数据库连接工具要输入用户名和密码
C:\WINDOWS\system32>net start MongoDB
MongoDB 服务正在启动 .
MongoDB 服务无法启动。
发生服务特定错误:100
请键入 NET HELPMSG 3547 以获取更多的帮助
C:\WINDOWS\system32>net start mongodb
服务没有响应控制功能。
请键入 NET HELPMSG 2186 以获得更多的帮助。
出现这个问题一般是路径有问题。
1)请注意你所有的路径没有错,包括 mongod 所在路径,日志所在路径等;
2)不要加入多余的“\”,如“D:\MongoDB\Data”这个,千万不要写成“D:\MongoDB\Data\”。
C:\WINDOWS\system32>sc delete MongoDB
[SC] DeleteService 失败 1072:
指定的服务已标记为删除
C:\WINDOWS\system32>sc create MongoDB binpath="E:\MongoDB\bin\mongod.exe --dbpath E:\MongoDB\data --logpath E:\MongoDB\logs\mongodb.log --logappend --auth --service"
[SC] DeleteService 失败 1072:
指定的服务已标记为删除
4.0.6 版本未启动安全认证前 shell 会显示更多的 warnings 信息
在 4.0.6 版本启动安全认证无登录查看数据库的时候不会报错,但不显示
C:\Users\xiaohao>mongo
MongoDB shell version v4.0.6
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("10108eaa-3c56-4fbf-949d-fe45ce13d9bd") }
MongoDB server version: 4.0.6
###无登录用户查询数据库不会报错,但不会显示数据库
> show dbs
> exit
bye
###进行用户登录
C:\Users\xiaohao>mongo -u myUserAdmin -p passwd localhost:27017/admin
MongoDB shell version v4.0.6
connecting to: mongodb://localhost:27017/admin?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("83298974-c4ab-40bf-9343-03cf91c02652") }
MongoDB server version: 4.0.6
###登录用户查询数据库会显示相关数据
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
>