加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 服务器 > 系统 > 正文

MongoDB开启身份验证

发布时间:2023-10-17 15:16:55 所属栏目:系统 来源:
导读:MongoDB支持各种认证机制,以下启用独立 mongod 实例的访问控制,并使用默认身份验证机制。

用户管理员

启用访问控制后,请确保在 admin 数据库中拥有 userAdmin 或 userAdminAnyDatabase 角色的用户。该用户
MongoDB支持各种认证机制,以下启用独立 mongod 实例的访问控制,并使用默认身份验证机制。
 
用户管理员
 
启用访问控制后,请确保在 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启用身份验证
 
修改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]#
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章