yum安装mongodb4.0,开启远程访问及用户权限
1.配置MongoDB的yum源
创建yum源文件:
#cd /etc/yum.repos.d
#vim mongodb-org-4.0.repo
使用阿里云的源
[mngodb-org] name=MongoDB Repository baseurl=http://mirrors.aliyun.com/mongodb/yum/redhat/7Server/mongodb-org/4.0/x86_64/ gpgcheck=0 enabled=1
这里可以修改 gpgcheck=0, 省去gpg验证
安装之前先更新所有包 :
# yum update
2.安装MongoDB
安装命令:
yum -y install mongodb-org
安装完成后
查看mongo安装位置 whereis mongod
查看修改配置文件 : vim /etc/mongod.conf
bindIp: 172.0.0.1 改为 bindIp: 0.0.0.0 或者使用 bindIpAll: true ,运行所有ip访问,bindIp与bindIpAll是互斥,只能启用一个
(注意冒号与ip之间需要一个空格)
3.启动MongoDB
启动mongodb :systemctl start mongod.service
停止mongodb :systemctl stop mongod.service
查到mongodb的状态:systemctl status mongod.service
4.外网访问需要关闭防火墙:
CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙。
关闭firewall:
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
vim /etc/sysconfig/iptables
iptables文件添加
-A INPUT -m state --state NEW -m tcp -p tcp --dport 27017 -j ACCEPT
(注意:-A INPUT -m state --state NEW -m tcp -p tcp --dport 27017 -j ACCEPT要加在-A INPUT -j REJECT --reject-with icmp-host-prohibited之前,不然启动无效)
重启iptables
service iptables restart
5.设置开机启动
systemctl enable mongod.service
命令:mongo
查看数据库:show dbs
7.创建用户及权限
7.1、通过非授权的方式启动mongo
7.2、创建admin数据库
use admin
7.3、添加管理员用户
db.createUser({user:"admin",pwd:"123456",roles:["root"]})
备注:用户名和密码可随意定
7.4、认证
db.auth("admin", "123456")
7.5、切换数据库
use test
7.6、创建用户
db.createUser({user: "root", pwd: "123456", roles: [{ role: "dbOwner", db: "test" }]})
7.7、通过客户端连接test数据库(开启权限认证后使用)
7.启用权限控制:
编辑mongod.conf
vim /etc/mongod.conf
security:
authorization: enabled
重启mongodb:systemctl restart mongod.service
8.每个角色可以使用的命令
角色名称:read 可使用的命令
changeStream
collStats
dbHash
dbStats
find
killCursors
listIndexes
listCollections
角色名称:readWrite 可使用的命令
collStats
convertToCapped
createCollection
dbHash
dbStats
dropCollection
createIndex
dropIndex
find
insert
killCursors
listIndexes
listCollections
remove
renameCollectionSameDB
update
这里简单列出常用的两个角色可以使用的命令,其他角色可使用命令参考官方文档:https://docs.mongodb.com/manual/reference/built-in-roles/
创建用户并且授予角色:
创建用户,用户名为read,密码为read,授予read角色,获得demo数据库的读取权限
db.createUser({ 'user': 'read', 'pwd': 'read', 'roles': [{ 'role': 'read', 'db': 'demo' }] })
更新用户密码及权限:更新read用户,密码为read。获得demo和role数据库的读取权限
db.updateUser( "read", { pwd: 'read', // or cleartext password customData: { title: "Senior Manager" }, roles: [{ role: "read", db: "demo" }, { role: "read", db: "role" }] } )
删除用户
db.dropUser(“read”)