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: 
   #    command:
   #       verbosity: 

processManagement:
   fork: true                                   #以守护进程运行 默认false
   # pidFilePath:                       #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:              # deprecated since 2.6
   #    mode: 
   #    PEMKeyFile: 
   #    PEMKeyPassword: 
   #    clusterFile: 
   #    clusterPassword: 
   #    CAFile: 
   #    CRLFile: 
   #    allowConnectionsWithoutCertificates: 
   #    allowInvalidCertificates: 
   #    allowInvalidHostnames: 
   #    disabledProtocols: 
   #    FIPSMode: 

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


# setParameter:                                 #设置参数
#    : 
#    : 

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

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

# replication:                                  #复制集相关
#    oplogSizeMB: 
#    replSetName: 
#    secondaryIndexPrefetch: 
#    enableMajorityReadConcern: 
# sharding:                                     #集群分片相关
#    clusterRole: 
#    archiveMovedChunks: 

# auditLog:
#    destination: 
#    format: 
#    path: 
#    filter: 

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

# basisTech:
#    rootDirectory: 

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

三、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库连接可操作其他库

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

你可能感兴趣的:(centos7-mongodb安装及授权)