Windows 使用Mongosh创建管理与普通账户

承接Windows 安装解压版MongoDb,系统正常服务化后,为保证访问安全,还需要创建一个管理员账户并设置密码。
当前配置mongod.cfg还未设置需要进行权限验证,保证MongoDb服务正常运行。
storage:dbPath: "[解压路径]/data"
systemLog:destination: filepath: "[解压路径]/log/mongod.log"logAppend: true
net:bindIp: 127.0.0.1port: 27017setParameter:enableLocalhostAuthBypass: false
创建管理员账户
使用mongosh.exe 免登录进入系统。
>mongosh.exe mongodb://localhost:27017/test
Current Mongosh Log ID: 690ca4ca2da98cebde63b111
Connecting to: mongodb://localhost:27017/test?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+2.5.9
For mongosh info see: https://www.mongodb.com/docs/mongodb-shell/
test>
切换到admin数据库,需要在当前数据库下创建admin账户。
use admin
admin>
用户创建命令,结构如下:
db.createUser({user:"admin",pwd:"[pwd]",roles:[{role:"root",db:"admin"}]})
创建成功后,输出如下:
{ ok 1 }
开启认证配置
去到配置文件,启用mongodb 验证,一般在进行账户配置之后进行添加。
net:bindIp: 127.0.0.1port: 27017security:authorization: enabledsetParameter:enableLocalhostAuthBypass: false
修改之后,重启服务,重启之后,再想创建用户就需要进行认证。否则执行过程中将提示。
MongoServerError[Unauthorized]: Command createUser requires authentication
此时需要使用exit()退出当前会话,使用认证方式连接服务。
mongosh.exe --port 27017 --authenticationDatabase "admin" -u "admin" -p
Enter password: *********
创建普通用户
通过命令行或者可视化工具,切换到指定数据库,哪怕是不存在也可以,服务会自动创建。进行用户创建,只是数据库不存在数据集时,远程连接后,看不到任何数据结果,使用管理员账户,进行登录,验证成功后进入会话,切换到目标库,创建对应账户。
use dbname
db.createUser({user:"[username]",pwd:"[pwd]",roles:[{role:"readWrite",db:"[dbname]"},{role:"dbAdmin",db:"[dbname]"}]})
{ ok: 1 }
三方应用链接方式访问
账户和密钥创建成功后,如果第三方程序或服务需要通过连接字符串进行连接,Mongodb 连接字符串如下格式。
mongodb://<用户名>:<用户密码>@127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&authSource=ynkcloud
需要注意的是,当密钥或账户中存在特殊字符时,例如@符号,需要转换为URL编码格式。

