mongodb 开启认证方式

一、单实例情况

1.启动服务(不启用--auth参数)

2.创建超级管理员账户

use admin
 db.addUser( { user: "admin", pwd: "admin", roles: [ "userAdminAnyDatabase" ] } )
或db.addUser( { user: "root", pwd: "root", roles: [ "root" ] } )

3.再重启mongodb,重启mongod时加--auth或者在配置文件中加auth=ture就可以开启认证(生产环境,不要用--auth参数启用认证,一但数据库重启,数据库将不再认证)

4.使用管理员账号进入Mongodb

有两种方式可以进行认证

(1)在启用mongo shell时进行认证

mongo localhost:27017admin -u admin  -p admin

(2)进入到mongo shell之后进行认证

useadmin
db.auth('admin','admin')

之后就可以为数据库添加新用户

二、副本集开启认证

副本集总体思路是用户名、密码和keyfile文件,keyfile需要各个副本集服务启动时加载而且要是同一文件,然后在操作库是需要用户名、密码

KeyFile文件必须满足条件:

(1)至少6个字符,小于1024字节

(2)认证时候不考虑文件中空白字符

(3)连接到副本集的成员和mongos进成的keyfile文件内容必须一样

(4)必须是base64编码,但是不能有等号

(5)文件权限必须是x00,也就是说,不能分配任何权限给group成员和other成员

1.生成keyFile文件(使用openssl生成)

openssl rand -base64 100 > /data/mongodb/etc/key_keyfile
chmod 600 key_keyfile

2.将生成好的keyFile文件scp到所有的副本集机器上

文件路径可以不一样,权限都要改

3.所有副本集机器上的配置文件指定keyFile路径(没有keyFile的机器将无法加入副本集)

开启了keyFile,隐含就开启了auth,这个时候连接副本集就需要进行认证了,否则只能通过本地例外方式操作数据库。

在副本集中添加用户需要在服务未加--keyFile参数启动的情况加按照单实例方法添加(访问任意一个副本器操作,其他副本集会自动同步),账户添加、授权成功后重新加入keyFile启动服务,即可完成并使用。

原文地址:https://www.cnblogs.com/Knight7971/p/10149643.html