centos7-mongodb安装及授权

一、mongodb安装

配置yum源

一般情况下,MongoDB源配置好后是不能访问的,可以配置代理

[配置yum资源后不能访问可设置代理,vim /etc/yum.conf  添加 proxy=http://username:password@ip:port]

touch /etc/yum.repos.d/mongodb-3.4.repo
vim /etc/yum.repos.d/mongodb-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=0
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc

-------------------------------------------------------------------------------

yum update
yum  install -y mongodb-org

启动mongod :systemctl start mongod.service
停止mongod :systemctl stop mongod.service

至此安装完成!

=============================================================================================

二、mongodb配置

vim /etc/mongod.conf

参考如下:

---------------------------------------------------------------------------------------------
systemLog:
   # verbosity: 0                               #日志等级,0-5,默认0
   # quiet: false                               #限制日志输出,
   # traceAllExceptions: true                   #详细错误日志
   # syslogFacility: user                       #记录到操作系统的日志级别,指定的值必须是
                                                    #操作系统支持的,并且要以--syslog启动
   path: /home/mongodb/mongod.log               #日志路径。
   logAppend: false                             #启动时,日志追加在已有日志文件内还是备份旧日志后,
                                                    #创建新文件记录日志, 默认false
   logRotate: rename                            #rename/reopen。rename,重命名旧日志文件,创建新文件记录;
                                                    #reopen,重新打开旧日志记录,需logAppend为true
   destination: file                            #日志输出方式。file/syslog
   timeStampFormat: iso8601-local               #日志日期格式。ctime/iso8601-utc/iso8601-local
   # component:                                 #各组件的日志级别
   #    accessControl:
   #       verbosity: <int>
   #    command:
   #       verbosity: <int>

processManagement:
   fork: true                                   #以守护进程运行 默认false
   # pidFilePath: <string>                      #PID 文件位置

net:
   port: 27017                                  #监听端口,默认27017
   bindIp: 127.0.0.1                            #绑定监听的ip,多个Ip用逗号分隔
   maxIncomingConnections: 65536                #最大连接数,可接受的连接数还受限于操作系统配置的最大连接数
   wireObjectCheck: true                        #校验客户端的请求,防止错误的或无效BSON插入,默认true
   ipv6: false                                  #是否启用ipv6,3.0以上版本始终开启
   unixDomainSocket:                            #unix socket监听,仅适用于基于unix的系统
      enabled: false                            #默认true
      pathPrefix: /tmp                          #路径前缀,默认/temp
      filePermissions: 0700                     #文件权限 默认0700
   http:                                        #警告 确保生产环境禁用HTTP以防止数据暴露和漏洞攻击
      enabled: false                            #是否启用HTTP接口
      JSONPEnabled: false                       #JSONP的HTTP接口
      RESTInterfaceEnabled: false               #REST API接口
   # ssl:
   #    sslOnNormalPorts: <boolean>             # deprecated since 2.6
   #    mode: <string>
   #    PEMKeyFile: <string>
   #    PEMKeyPassword: <string>
   #    clusterFile: <string>
   #    clusterPassword: <string>
   #    CAFile: <string>
   #    CRLFile: <string>
   #    allowConnectionsWithoutCertificates: <boolean>
   #    allowInvalidCertificates: <boolean>
   #    allowInvalidHostnames: <boolean>
   #    disabledProtocols: <string>
   #    FIPSMode: <boolean>

security:
   authorization: enabled                       # enabled/disabled #开启客户端认证
   javascriptEnabled: true                      #启用或禁用服务器端JavaScript执行
   # keyFile: <string>                          #密钥路径
   # clusterAuthMode: <string>                  #集群认证方式
   # enableEncryption: <boolean>
   # encryptionCipherMode: <string>
   # encryptionKeyFile: <string>
   # kmip:
   #    keyIdentifier: <string>
   #    rotateMasterKey: <boolean>
   #    serverName: <string>
   #    port: <string>
   #    clientCertificateFile: <string>
   #    clientCertificatePassword: <string>
   #    serverCAFile: <string>
   # sasl:
   #    hostName: <string>
   #    serviceName: <string>
   #    saslauthdSocketPath: <string>


# setParameter:                                 #设置参数
#    <parameter1>: <value1>
#    <parameter2>: <value2>

storage:
   dbPath: /home/mongodb/data                   #数据库,默认/data/db
   indexBuildRetry: true                        #重启时,重建不完整的索引
   # repairPath: <string>                       #--repair操作时的临时工作目录
   journal: 
      enabled: true                             #启动journal,64位系统默认开启,32位默认关闭
      # commitIntervalMs: <num>                 #journal操作的最大时间间隔,默认100或30
   directoryPerDB: false                        #使用单独的目录来存储每个数据库的数据,默认false
   # syncPeriodSecs: 60                         使用fsync来将数据写入磁盘的延迟时间量,建议使用默认值
   engine: wiredTiger                           #存储引擎,mmapv1/wiredTiger/inMemory 默认wiredTiger
   # mmapv1:
   #    preallocDataFiles: <boolean>
   #    nsSize: <int>
   #    quota:
   #       enforced: <boolean>
   #       maxFilesPerDB: <int>
   #    smallFiles: <boolean>
   #    journal:
   #       debugFlags: <int>
   #       commitIntervalMs: <num>
   # wiredTiger:
   #    engineConfig:
   #       cacheSizeGB: <number>                #缓存大小
   #       journalCompressor: <string>          #数据压缩格式 none/snappy/zlib
   #       directoryForIndexes: <boolean>       #将索引和集合存储在单独的子目录下,默认false
   #    collectionConfig:
   #       blockCompressor: <string>            #集合数据压缩格式 
   #    indexConfig:
   #       prefixCompression: <boolean>         #启用索引的前缀压缩
   # inMemory:
   #    engineConfig:
   #       inMemorySizeGB: <number>

operationProfiling:                             #性能分析
   slowOpThresholdMs: 100                       #认定为查询速度缓慢的时间阈值, 默认100
   mode: off                                    #operationProfiling模式 off/slowOp/all 默认off

# replication:                                  #复制集相关
#    oplogSizeMB: <int>
#    replSetName: <string>
#    secondaryIndexPrefetch: <string>
#    enableMajorityReadConcern: <boolean>
# sharding:                                     #集群分片相关
#    clusterRole: <string>
#    archiveMovedChunks: <boolean>

# auditLog:
#    destination: <string>
#    format: <string>
#    path: <string>
#    filter: <string>

# snmp:
#    subagent: <boolean>                        #当设置为true,SNMP作为代理运行
#    master: <boolean>                          #当设置为true,SNMP作为主服务器运行

# basisTech:
#    rootDirectory: <string>

------------------------------------------------------------------------------------------------

三、mongodb授权

首先关闭授权认证:

security:
   authorization: disabled

#重启mongodb服务
mongo

> use admin
> db.createUser({user: "admin",pwd: "123456",roles: [ { role: "readWrite", db: "demo" } ]})

权限支持:

---------------------------------------------------------------------------------------

All build-in Roles 

Database User Roles: read|readWrite
数据库用户角色:读|读写

Database Admion Roles: dbAdmin|dbOwner|userAdmin
数据库管理角色:数据库管理员|数据库所有者|用户管理

Cluster Admin Roles: clusterAdmin|clusterManager|clusterMonitor|hostManager
集群管理角色:
Backup and Restoration Roles: backup|restore

All-Database Roles: readAnyDatabase|readWriteAnyDatabase|userAdminAnyDatabase|dbAdminAnyDatabase
所有数据库角色:读所有数据库|读写所有数据库|所有数据库的用户管理员|所有数据库的管理员

Superuser Roles: root 

---------------------------------------------------------------------------------------

exit

重启mongo服务

mongo

> use admin
> db.auth("admin","123456")

认证完成

删除及修改授权

#增加:
db.grantRolesToUser(
    "accountUser01",
    [
      { role: "read", db: "records" }
    ]
)
#删除:
db.revokeRolesFromUser(
    "accountUser01",
    [
      { role: "readWrite", db: "accounts" }
    ]
)

注意:mongodb中的账号与数据库为一对一关系,所以指定数据库的角色,必须指定数据库里的author

授权给admin库的超级操作权限只能在admin里面使用,即通过admin库连接可操作其他库

但是,实际代码中连接数据库必须单独创建用户并赋予相应权限!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值