配置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
至此安装完成!
=============================================================================================
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:
------------------------------------------------------------------------------------------------
首先关闭授权认证:
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
> 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库连接可操作其他库
但是,实际代码中连接数据库必须单独创建用户并赋予相应权限!!!