centos8 使用yum 安装 mongodb

1、制作 repo 文件

cat << EOF > /etc/yum.repos.d/mongodb-org-4.2.repo
[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc
EOF

baseurl=https://repo.mongodb.org/yum/redhat/8/mongodb-org/4.2/x86_64/安装失败,尝试把地址写死为7,安装基于centos7的版本。可以成功安装
baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.2/

2、使用yum 命令安装

yum install -y mongodb-org

3、启动mongodb

安装完启动服务则可以使用

启动、停止、重启命令如下:

service mongod start
service mongod stop
service mongod restart

4、开放 mongodb 的远程连接

mongodb的配置文件是 /etc/mongod.conf

如果要开放远程访问需要修改该文件的 bindIp值为: 0.0.0.0 ,否则通过其它电脑是连接不到的见文章末尾图片

vim /etc/mongod.conf

文件修改后要执行 restart 使配置生效

service mongod restart

如果仍不能远程连接,查看防火墙状态,如果防火墙开启,关闭防火墙或 让防火墙放开 27017 端口(该端口是mongodb的默认端口,可通过配置文件修改mongodb的端口)
查看防火墙状态

  firewall-cmd --state   

关闭防火墙状态

systemctl stop firewalld.service 

防火墙放开 27017 端口

firewall-cmd --permanent --zone=public --add-port=27017/tcp
firewall-cmd --reload 

测试是否可以远程连接
http://服务器ip:27017/
如果不需要用户及密码,mongodb安装到此就结束了,如需要进行权限控制请参考第五步

5、创建用户和密码

1.进入mongo shell

[root@localhost ~]# mongo
在这里插入图片描述

2.切换到admin数据库

admin这个库是mongodb自动带的,专门管理用户和权限的,创建超级用户,这个用户可以管理所有用户的增删改以及权限控制

> use admin
switched to db admin

3.添加账户

创建一个超级管理员权限(拥有userAdminAnyDatabasereadWriteAnyDatabase两个权限)的用户。用户名和密码随便写,但是角色必须是这两个
db.createUser( { user: "adroot", pwd: "adroot", roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ] } )
在这里插入图片描述
记好用户名和密码,下面要用到
mongodb的用户角色权限参考

user:用户名

pwd:密码

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数据库中可用。超级账号,超级权限。

4.修改mongo.conf文件

停止mongodb服务(service mongod stop),修改配置文件(/etc/mongod.conf)
security:
authorization: enabled
在这里插入图片描述

5.验证

启动mongodb service mongod start
验证权限有两种方式

  • 连接实例的时候就验证(用户名密码是上面创建用户时设置的)
    mongo --port 27017 -u "adroot" --authenticationDatabase "admin" -p
    之后会让你输入密码:输入adroot
    在这里插入图片描述
  • 连接实例之后,使用数据库的时候验证
    先连接实例:mongo
    然后验证:(用户名密码是上面创建用户时设置的)
    use admin
    db.auth("adroot", "adroot" )
    返回一个:1,表示成功
    在这里插入图片描述

6、给其他数据库创建用户权限

一旦通过用户管理员身份验证,就可以使用 db.createUser()创建其他用户。可以将任何内置角色或用户定义的角色分配给用户,角色可以看官网介绍,也可以参考上面mongodb的用户角色权限参考
创建了一个test数据库:
user mytest
在这里插入图片描述
这条语句就是,数据库存在则转到该数据库,不存在则创建之后转到该数据库
注意:mongodb创建数据库后需要对数据库做一次操作,数据库才真正创建保留
在这里插入图片描述
给数据库插入一条数据:
插入语句:db.collection.insertOne()
collection表示集合,如果集合不存在则自动创建之后插入数据,比如下面的这个语句,将自动创建testcollection,并插入一个对象
db.testcollection.insert({“name”:“test”,“age”:10})
在这里插入图片描述
创建用户
use test

db.createUser(
  {
    user: "tester",
    pwd: "123456",
    roles: [ { role: "readWrite", db: "test" }]
  }
)

创建成功之后,断开实例连接

然后重新以验证方式登录实例,这里使用第一种方式(连接时验证):
mongo --port 27017 -u "tester" --authenticationDatabase "test" -p
输入密码:123456

现在你有权在test中执行读写操作了:
db.testcollection.insert({"name":"testertest","age":20})
查询一下插入结果:
db.users.find().pretty()

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章