MongoDB 是一个常用的文档型 NoSQL 数据库,广泛应用于 Web 应用、移动应用等领域。在项目中,我们通常需要给 MongoDB 数据库添加用户及授权,以实现更加严格的数据访问控制。本文将介绍在 MongoDB 中添加用户及权限时可能遇到的问题和解决方案,并为读者提供示例代码和学习指导。
添加用户
在 MongoDB 中添加用户需要在管理员权限下进行操作。首先要连接服务器并进入管理员账号:
mongo --host <hostname> --port <port> -u <username> -p <password> --authenticationDatabase admin
然后使用 db.createUser()
方法添加普通用户:
use admin db.createUser( { user: "<username>", pwd: "<password>", roles: [ { role: "<role>", db: "<database>" } ] } )
其中,username
和 password
分别为要添加的用户账号和密码,role
为该用户的权限角色,database
为用户所属的数据库。常见的角色有 read
、readWrite
、dbAdmin
、userAdmin
等,详细说明可参考 MongoDB 官方文档。
授权问题及解决方案
- 新添加的用户无法访问数据库
在添加用户后,有时会发现该用户无法访问数据库。这通常是由于 MongoDB 的认证问题引起的。默认情况下,MongoDB 的认证功能是关闭的。要开启认证功能,需要修改 MongoDB 配置文件:
# vi /etc/mongod.conf
在文件中添加以下内容:
#security: security: authorization: enabled
保存后重启 MongoDB 服务即可生效。
- 用户权限不足
有时,在使用添加的用户登录数据库后,操作数据库时会出现权限不足的错误。此时需要确保该用户的权限角色正确,并在指定的数据库下赋予权限。例如:
use test db.grantRolesToUser("testuser", [ { "role" : "readWrite", "db" : "test" } ])
- 更换管理员密码
如果管理员的密码被泄漏或需要更改,可以使用如下命令更换密码:
use admin db.changeUserPassword("<username>", "<newpassword>")
示例代码
下面是一个使用 Node.js 客户端连接 MongoDB 数据库,添加用户和授权的示例代码:
-- -------------------- ---- ------- ----- ----------- - ------------------------------- ----- --- - --------------------------------- ----- -------- - ----------- ----- -------- - ----------- ----- -------- - ------- ----- ---- - ------------ ------------------------ - ------------------- ---- -- ------------- ------- - ---------------------- ------------ -- --------- ----- ------- - ------------------- ------------------------------ --------- ------------- ------- - ----------------------------- ----- -- - -------------------- -------------------- --------- - ------ - - ----- ----- --- -------- - - -- ------------- ------- - ----------------- -------- ----------------------------- - - ----- ----- --- -------- - -- ------------- ------- - ----------------- ------------- --------------- --- --- --- ---展开代码
学习指导
本文主要介绍了在 MongoDB 中添加用户及授权时的问题和解决方案,并提供了示例代码。想要更深入地了解 MongoDB 的使用和管理,请参考 MongoDB 官方文档,掌握 MongoDB 的基本概念和操作方法。同时,建议读者学习 Node.js 客户端的使用,掌握通过 Node.js 客户端进行 MongoDB 数据库操作的方法和技巧。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67c4531a6e1fc40e36d37f92