yum安装Mongdb3.4

自适应
• 阅读 1465
Centos 7
[mongodb-org]
name=MongoDB Repository
baseurl=http://mirrors.aliyun.com/mongodb/yum/redhat/7Server/mongodb-org/3.4/x86_64/
gpgcheck=0
enabled=1

Centos 6
[mongodb-org]
name=MongoDB Repository
baseurl=http://mirrors.aliyun.com/mongodb/yum/redhat/6Server/mongodb-org/3.4/
gpgcheck=0
enabled=1

yum install mongodb-org -y
chkconfig mongod on
service mongodb restart

修改监听地址
bindIp: 0.0.0.0

开启认证
修改配置文件/etc/mongodb.conf
security:
  authorization: enabled

重启mongodb
sudo service mongodb restart

MongoDB用户角色配置

基本知识介绍
MongoDB基本的角色:
1.数据库用户角色:read、readWrite; 
2.数据库管理角色:dbAdmin、dbOwner、userAdmin; 
3.集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager; 
4.备份恢复角色:backup、restore; 
5.所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase 
6.超级用户角色:root 
userAdminAnyDatabase:有分配角色和用户的权限,但没有查写的权限

//这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase) 
其中MongoDB默认是没有开启用户认证的,也就是说游客也拥有超级管理员的权限。userAdminAnyDatabase:有分配角色和用户的权限,但没有查写的权限

添加管理员

使用命令mongo进入命令行
创建第一个用户,该用户需要有用户管理权限
这里设置其角色为root

use admin
db.createUser({user:"root",pwd:"123456",roles:["root"]})

新增的用户在system.users中

> db.getCollectionNames()
[ "system.indexes", "system.users", "system.version" ]

第一个用户添加完成后,便需要认证才能继续添加其他用户

使用db.auth("root", "123456")认证

添加普通数据库用户

为其他数据库添加用户,添加用户前需要切换到该数据库
这里设置其角色为dbOwner

use db1
db.createUser({user: "db1", pwd: "123456", roles: [{ role: "dbOwner", db: "db1" }]})

查看用户

> use admin
switched to db admin
> db.system.users.find()

命令参考

3.1、修改用户密码
db.updateUser( "admin",{pwd:"password"});

3.2、密码认证
db.auth("admin","password");

3.3、MongoDB连接信息查询
db.serverStatus().connections;
MongoDB实例接受的最多连接数,如果高于操作系统接受的最大线程数,设置无效。net.maxIncomingConnections默认(65536)

3.4、关闭MongoDB服务
use admin;
db.shutdownServer();

3.5、删除用户
删除用户(需要root权限,会将所有数据库中的football用户删除)
db.system.users.remove({user:"football"});

删除用户(权限要求没有那么高,只删除本数据中的football用户)
db.dropUser("football");

3.6  查询所有用户
mongo 192.168.1.247/admin -u admin -p 123456
> use admin
switched to db admin
> db.system.users.find();

启动报错解决:

在系统上安装mongodb之后报错。
错误信息:

WARNING: /sys/kernel/mm/transparent_hugepage/enabled is ‘always’.We suggest setting it to ‘never’ 
WARNING: /sys/kernel/mm/transparent_hugepage/defrag is ‘always’.We suggest setting it to ‘never’ 
WARNING: soft rlimits too low. rlimits set to 1024 processes, 65535 files. Number of processes should be at least 32767.5 : 0.5 times number of files. 

解决方案:

前两个warning
echo never >>  /sys/kernel/mm/transparent_hugepage/enabled
echo never >>  /sys/kernel/mm/transparent_hugepage/defrag

第三个warning
vim /etc/security/limits.conf
添加一下几行
* soft nofile 64000
* hard nofile 64000
mongod soft nproc 32000
mongod hard nproc 32000

重启mongod

sudo service mongod restart

成功
重启成功之后,所有报错都没啦,如下

➜  ~ git:(master) mongo
MongoDB shell version: 3.2.6
connecting to: test
>

权限说明

作为数据库软件,我们肯定不想谁都可以访问,为了确保数据的安全,MongoDB 也会像其他的数据库软件一样可以采用用户验证的方法,那么该怎么做呢?其实很简单,MongoDB 提供了 addUser 方法,该方法包含三个参数:
user - 字符串,表示用户名
password - 字符串,对应的密码bushao
readOnly - boolean,可选参数,默认值为 false,表示是否是只读用户
添加用户:db.addUser("guest", "pass", true)
修改用户密码: db.addUser("guest", "newpass")
删除用户: db.removeUser("guest")
更复杂的使用方式请参考官方文档。
可以将 MongoDB 的用户分为两类:超级用户和数据库用户。超级用户拥有最大权限,可以对所有数据库进行任意操作,超级用户储存在 admin 数据库中,刚安装的 MongoDB 中 admin 数据库是空的;数据库用户存储在单个数据库中,只能访问对应的数据库。另外,用户信息保存在 db.system.users 中。
关于用户和权限有以下特性:
数据库是由超级用户来创建的,一个数据库可以包含多个用户,一个用户只能在一个数据库下,不同数据库中的用户可以同名
如果在 admin 数据库中不存在用户,即使 mongod 启动时添加了 –auth 参数,此时不进行任何认证还是可以做任何操作
在 admin 数据库创建的用户具有超级权限,可以对 MongoDB 系统内的任何数据库的数据对象进行操作
特定数据库比如 test1 下的用户 test_user1,不能够访问其他数据库 test2,但是可以访问本数据库下其他用户创建的数据
不同数据库中同名的用户不能够登录其他数据库。比如数据库 test1 和 test2 都有用户 test_user,以 test_user 登录 test1 后,不能够登录到 test2 进行数据库操作

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
美凌格栋栋酱 美凌格栋栋酱
6个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Stella981 Stella981
3年前
Mac下安装mongdb
使用homebrew安装MongoDB:brewinstallmongodb这时MongoDB将被安装在/usr/local/Cellar/mongodb/4.0.3\_1(我的MongoDB版本是4.0.3\_1)3.配置MongoDB:安装完MongoDB后,需要配置一下MongoDB
Wesley13 Wesley13
3年前
MongoDB
一、MongoDB是一款NoSql数据库二、部署单实例MongoDB1.安装环境:(1)系统:Centos7.2(2)MongoDB:Percona的MongoDB3.42.配置yum源percona官方文档【https://www.percona.com/doc/perconarepoconfig/yumrepo.html】
Stella981 Stella981
3年前
CentOS7 MongoDB安装及基本配置
一、安装包的获取1.创建文件:vi/etc/yum.repos.d/mongodborg4.0.repo2.在上一步创建的文件中,写入如下内容:mongodborg4.0nameMongoDBRepositorybaseurlhttps://repo.mongodb.o
Stella981 Stella981
3年前
MangoDb的安装及使用
安装步骤一、创建文件vi/etc/yum.repos.d/mongodborg3.6.repo二、配置文件内容mongodborg3.6nameMongoDBRepositorybaseurlhttps://repo.mongodb.org/yu
Stella981 Stella981
3年前
Linux下的openvpn配置 与 easy
注意:以下操作由服务端操作即可PS:为什么我找不到var文件??\安装wgetO/etc/yum.repos.d/epel.repohttp://mirrors.aliyun.com/repo/epel7.repoyuminstallopenvpny//提供
Stella981 Stella981
3年前
RedHat6安装git
1.通过yum安装git:         一、 先配置yum:          把redhat系统镜像加载到电脑光驱中(无光驱可用u盘),然后把该镜像配置到环境变量中        !(https://static.oschina.net/uploads/space/2017/0402/133025_syOd_3276682.pn
Stella981 Stella981
3年前
CentOS7 PHP+Redis实现Session共享
先yum简单的安装rediswgetO/etc/yum.repos.d/CentOSBase.repohttp://mirrors.aliyun.com/repo/epel7.repoyumyinstallredis简单配置一下:vim/etc/redis.confdaemonizeye
Stella981 Stella981
3年前
RedHat系统的Yum安装
 RedhatLinux通常由于没有注册,导致yum程序无法使用,需要将其替换为centos的yum程序。1\.下载Yum的安装包,由于体系结构的不同和包的更新,因此目录和文件名的版本号可能需要调整以下。wget http://mirrors.163.com/centos/5/os/x86\_64/CentOS/yum3.2.2240
Stella981 Stella981
3年前
Fedora25安装配置mysql
1.切换到root用户suORsudoi2.安装mysql的yum源Fedora25dnfinstallhttps://dev.mysql.com/get/mysql57communityreleasefc259.noarch.rpm