基本信息
我的MongoDB数据位于 /Users/qins/data/replica/db{1,2,3}
我的复制集配置分别位于:
/Users/qins/data/replica/db1/mongod.conf/Users/qins/data/replica/db2/mongod.conf/Users/qins/data/replica/db3/mongod.conf
其中一个内容为:
systemLog:
destination: file
path: /Users/qins/data/replica/db1/mongod.log
logAppend: true
storage:
dbPath: /Users/qins/data/replica/db1
net:
bindIp: 0.0.0.0
port: 20011
replication:
replSetName: rs0 # 复制集名称
enableMajorityReadConcern: true
processManagement:
fork: true # 后台运行
1、创建数据库用户
登陆 主节点(PRIMARY)
> use admin
>
> db.createUser({user: 'root', pwd: '12345', roles: ['root']})
也可以分配特定的权限
> db.createUser({
user: 'root', pwd: '12345',
roles: [{ role: "userAdminAnyDatabase", db: "admin" }]
})
| role | 说明 |
|---|---|
| Read | 允许用户读取指定数据库 |
| readWrite | 允许用户读写指定数据库 |
| dbAdmin | 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问 |
| root | 只在admin数据库中可用。超级账号,超级权限 |
| dbAdminAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限 |
| userAdminAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的userAdmin权限 |
| readWriteAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的读写权限 |
| readAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的读权限 |
| userAdmin | 允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户 |
2、修改配置
创建 keyfile
openssl rand -base64 666 > keyfile
chmod 600 keyfile
一定要修改权限!一定要修改权限!一定要 chmod 600!
注意文件路径,如我的为 /Users/qins/data/exercise/replica3/keyfile
然后在mongod.conf中添加下面配置:
security:
keyFile: /Users/qins/data/exercise/replica3/keyfile
authorization: enabled
所有节点都要添加!并且 keyfile 必须一致!如果节点位于多台机器,需要自己复制(scp)过去。
3、重启MongoDB
> ps -ef | grep mongod
501 29597 1 0 4:08下午 ?? 0:58.83 mongod -f /Users/qins/data/replica/db1/mongod.conf
501 29633 1 0 4:08下午 ?? 0:57.94 mongod -f /Users/qins/data/replica/db2/mongod.conf
501 29654 1 0 4:08下午 ?? 0:59.54 mongod -f /Users/qins/data/replica/db3/mongod.conf
kill 掉,然后
mongod -f /Users/qins/data/replica/db1/mongod.conf
mongod -f /Users/qins/data/replica/db2/mongod.conf
mongod -f /Users/qins/data/replica/db3/mongod.conf