mongo-yum安装-配置用户权限
安装
安装步骤参考https://www.cnblogs.com/layezi/p/7290082.html
安装前注意: 此教程是通过yum安装的.仅限64位centos系统
安装步骤:
1、创建仓库文件:
vi /etc/yum.repos.d/mongodb-org-3.4.repo
然后复制下面配置,保存退出
[mongodb-org-3.4] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
2、yum安装
yum install -y mongodb-org
没有权限就在前面加: sudo
安装完毕后修改配置文件:
vi /etc/mongod.conf
修改配置文件的 bind_ip,
默认是 127.0.0.1 只限于本机连接
。所以安装完成后必须把这个修改为 0.0.0.0 ,否则通过别的机器是没法连接的!
3、启动、停止、重启
MongoDB默认将数据文件存储在/var/lib/mongo
目录,默认日志文件在/var/log/mongodb
中。如果要修改,可以在 /etc/mongod.conf
配置中指定备用日志和数据文件目录。
启动命令:
service mongod start
停止命令:
service mongod stop
查看mongoDB是否启动成功:
可以通过查看日志文件
cat /var/log/mongodb/mongod.log
日志文件应该会出现如下一句说明
[initandlisten] waiting for connections on port <port>
<port> 是mongodb运行端口
也可以通过下面命令检查是否启动成功
chkconfig mongod on
4、使用
[root@instance-d0nk2r2c ~]# mongo ## 查看数据库 > show dbs; ## 查看数据库版本 > db.version(); ## 常用命令帮助 > db.help();
权限
和其他所有数据库一样,权限的管理都差不多一样。mongodb存储所有的用户信息在admin 数据库的集合system.users中,保存用户名、密码和数据库信息。mongodb默认不启用授权认证,只要能连接到该服务器,就可连接到mongod。若要启用安全认证,需要更改配置文件参数auth。
想要添加用户密码验证首先需要添加用户,用户存在system.users 表中
> use admin switched to db admin db.createUser({user:'admin',pwd:'admin123',roles:[{ "role" : "userAdminAnyDatabase", "db" : "admin" }]})
刚建立了 userAdminAnyDatabase 角色,用来管理用户,可以通过这个角色来创建、删除用户。
有没有一个超级权限?不仅可以授权,而且也可以对集合进行任意操作?答案是肯定的,只是不建议使用。那就是role角色设置成root。
db.createUser({user:'root',pwd:'root',roles:[{ "role" : "root", "db" : "admin" }]})
添加了两个用户可以语句查看:
db.system.users.find()
此时连接仍然是没有验证的,我们需要重启mongodb,并且要在启动时带上auth参数,才会开启验证
/usr/bin/mongod -f /etc/mongod.conf --auth
用户角色授权:
#授予角色:db.grantRolesToUser( "userName" , [ { role: "<role>", db: "<database>" } ]) db.grantRolesToUser( "admin" , [ { role: "userAdminAnyDatabase", db: "admin" } ]) #取消角色:db.grantRolesToUser( "userName" , [ { role: "<role>", db: "<database>" } ]) db.revokeRolesFromUser( "admin" , [ { role: "userAdminAnyDatabase", db: "admin" } ])
roles:指定用户的角色,可以用一个空数组给新用户设定空角色;在roles字段,可以指定内置角色和用户定义的角色。role里的角色可以选:
Built-In Roles(内置角色): 1. 数据库用户角色:read、readWrite; 2. 数据库管理角色:dbAdmin、dbOwner、userAdmin; 3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager; 4. 备份恢复角色:backup、restore; 5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase 6. 超级用户角色:root // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase) 7. 内部角色:__system
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限