MongoDB启用身份验证
2017-12-20 12:11
597 查看
MongoDB支持各种认证机制,以下启用独立 mongod 实例的访问控制,并使用默认身份验证机制。
用户管理员
启用访问控制后,请确保在 admin 数据库中拥有 userAdmin 或 userAdminAnyDatabase 角色的用户。该用户可以管理用户和角色,例如:创建用户,授予或撤销用户角色,以及创建或修改定义角色。 可以在启用访问控制之前或之后创建用户。如果在创建任何用户之前启用访问控制,MongoDB会提示本地主机异常,允许在管理数据库中创建用户管理员。创建后,必须作为用户管理员进行身份验证,以根据需要创建其他用户。
以下过程首先将用户管理员添加到运行无访问控制的 MongoDB 实例,然后启用访问控制。
创建用户管理员
在管理数据库中,添加具有 userAdminAnyDatabase 角色的用户。以下在 admin 数据库中创建用户justin:
注意:创建用户的数据库(在此示例中为admin)是用户的身份验证数据库。用户将对该数据库进行身份验证,但用户可以在其他数据库中担任角色; 即用户的认证数据库不限制用户的权限。
修改mongodb配置文件,启用认证
[root@localhost bin]# ./mongo --port 9981 -u "justin" -p "51cto" --authenticationDatabase "admin"
MongoDB shell version v3.4.6
connecting to: mongodb://127.0.0.1:9981/
MongoDB server version: 3.4.6
exit
bye
[root@localhost bin]# ./mongo --port 9981
MongoDB shell version v3.4.6
connecting to: mongodb://127.0.0.1:9981/
MongoDB server version: 3.4.6
use admin
switched to db admin
db.auth("justin","51cto")
1
exit
bye
[root@localhost bin]#
myUserAdmin用户只具有管理用户和角色的权限。如果使用myUserAdmin尝试执行任何其他操作,例如从ywbz数据库中的foo集合读取数据,MongoDB将返回错误。
以下操作将用户 csdp添加到在ywbz数据库中并给予ywbz数据库的readWrite角色以及在reporting数据库中读取角色。
注意:创建用户的数据库(在本示例中为ywbz)是该用户的身份验证数据库。虽然用户将对该数据库进行身份验证,但用户可以在其他数据库中担任角色; 即用户的认证数据库不会限制用户的权限。
用户管理员
启用访问控制后,请确保在 admin 数据库中拥有 userAdmin 或 userAdminAnyDatabase 角色的用户。该用户可以管理用户和角色,例如:创建用户,授予或撤销用户角色,以及创建或修改定义角色。 可以在启用访问控制之前或之后创建用户。如果在创建任何用户之前启用访问控制,MongoDB会提示本地主机异常,允许在管理数据库中创建用户管理员。创建后,必须作为用户管理员进行身份验证,以根据需要创建其他用户。
以下过程首先将用户管理员添加到运行无访问控制的 MongoDB 实例,然后启用访问控制。
创建用户管理员
在管理数据库中,添加具有 userAdminAnyDatabase 角色的用户。以下在 admin 数据库中创建用户justin:
注意:创建用户的数据库(在此示例中为admin)是用户的身份验证数据库。用户将对该数据库进行身份验证,但用户可以在其他数据库中担任角色; 即用户的认证数据库不限制用户的权限。
[root@localhost bin]# pwd /opt/mongodb-3.4.6/bin [root@localhost bin]# ./mongo --port 9981 MongoDB shell version v3.4.6 connecting to: mongodb://127.0.0.1:9981/ MongoDB server version: 3.4.6 Welcome to the MongoDB shell. For interactive help, type "help". For more comprehensive documentation, see http://docs.mongodb.org/ Questions? Try the support group http://groups.google.com/group/mongodb-user Server has startup warnings: 2017-12-20T00:45:44.490+0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended. 2017-12-20T00:45:44.490+0800 I CONTROL [initandlisten] > use admin switched to db admin > db.createUser( #回车 ... { #回车,下同 ... user:"justin", ... pwd:"51cto", ... roles:[{role:"userAdminAnyDatabase",db:"admin"}] ... } ... ) Successfully added user: { "user" : "justin", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] } > exit bye [root@localhost bin]#
修改mongodb配置文件,启用认证
[root@localhost bin]# cat ../conf/mongodb.conf bind_ip = 0.0.0.0 port = 9981 fork = true dbpath = /opt/mongodb-3.4.6/data pidfilepath = /var/run/mongod.pid logpath = /opt/mongodb-3.4.6/logs/mongod.log logappend = true auth = true [root@localhost bin]# systemctl restart mongodb.service [root@localhost bin]#
3. 以用户管理员身份进行连接和验证 在连接期间进行身份验证,使用-u <username>,-p <password>和--authenticationDatabase <database> 连接后验证,切换到身份验证数据库(在这种情况下为admin),并使用db.auth(<username>,<pwd>)方法进行身份验证
[root@localhost bin]# ./mongo --port 9981 -u "justin" -p "51cto" --authenticationDatabase "admin"
MongoDB shell version v3.4.6
connecting to: mongodb://127.0.0.1:9981/
MongoDB server version: 3.4.6
exit
bye
[root@localhost bin]# ./mongo --port 9981
MongoDB shell version v3.4.6
connecting to: mongodb://127.0.0.1:9981/
MongoDB server version: 3.4.6
use admin
switched to db admin
db.auth("justin","51cto")
1
exit
bye
[root@localhost bin]#
4. 根据需要创建其他用户 当管理员用户进行身份验证通过之后,可使用db.createUser()创建其他用户。可以为用户分配任何内置角色或用户定义的角色。
myUserAdmin用户只具有管理用户和角色的权限。如果使用myUserAdmin尝试执行任何其他操作,例如从ywbz数据库中的foo集合读取数据,MongoDB将返回错误。
以下操作将用户 csdp添加到在ywbz数据库中并给予ywbz数据库的readWrite角色以及在reporting数据库中读取角色。
注意:创建用户的数据库(在本示例中为ywbz)是该用户的身份验证数据库。虽然用户将对该数据库进行身份验证,但用户可以在其他数据库中担任角色; 即用户的认证数据库不会限制用户的权限。
[root@localhost bin]# ./mongo --port 9981 -u "justin" -p "51cto" --authenticationDatabase "admin" MongoDB shell version v3.4.6 connecting to: mongodb://127.0.0.1:9981/ MongoDB server version: 3.4.6 > use ywbz switched to db ywbz > db.createUser( ... { ... user:"csdp", ... pwd:"51cto", ... roles:[{role:"readWrite",db:"ywbz"}, #用户csdp在数据库ywbz中执行读写操作权限 ... {role:"read",db:"reporting"}] #用户csdp在数据库reporting中有读操作权限 ... } ... ) Successfully added user: { "user" : "csdp", "roles" : [ { "role" : "readWrite", "db" : "ywbz" }, { "role" : "read", "db" : "reporting" } ] } > exit bye [root@localhost bin]#
相关文章推荐
- MongoDB管理用户并启用身份验证
- Exchange2003启用web页面登陆(表单型身份验证)
- Mongodb3.0 新增用户身份验证db.createUser()
- 配置SQL Server 2005 Express的身份验证方式,以及如何启用sa登录名(转)
- 单点登录(十二)-----遇到问题-----cas启用mongodb验证方式登录后没反应-pac4j-mongo包中的MongoAuthenticatInvocationTargetException
- 【Mongodb】3.0 配置身份验证db.createUser()说明
- 【Mongodb】3.X 配置身份验证
- MongoDB身份验证--命令行模式
- 在 AIX V6 上的 telnet、FTP 和 r 命令中配置和启用 Kerberos 身份验证
- 在 Ubuntu 和 Debian 上启用双因子身份验证的三种备选方案
- 试图运行项目时出错:无法在web服务器上启动调试。调试失败,因为没有启用集成window身份验证.
- MongoDB身份验证--命令行模式
- 单点登录(十一)-----遇到问题-----cas启用mongodb验证方式报错--Unable to locate Spring NamespaceHandler for XML schema na
- “无法在web服务器上启用调试。调试失败,因为没有启用Windows身份验证。”的解决方案
- 怎样启用SQL SERVER混合身份验证方式
- 为MongoDB添加身份验证
- 配置SQL Server 2005 Express的身份验证方式,以及如何启用sa登录名
- 配置SQL Server 2005 Express的身份验证方式及启用sa登录名
- 单点登录(十一)-----遇到问题-----cas启用mongodb验证方式报错--Unable to locate Spring NamespaceHandler for XML schema na
- 运行aspnet时要求启用windows集成身份验证