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启动服务,即可完成并使用。