mongodb:单机安装,配置,用户权限设置,客户端连接

 参考:

https://docs.mongodb.com/manual/ (官方文档)

安装mongodb

#创建服务安装目录
mkdir -p /usr/local/server
cd /usr/local/server

#下载
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.2.tgz
#解压,解压完就安装完成了
tar -zxvf mongodb-linux-x86_64-rhel70-4.4.2.tgz

#设置环境变量,编辑
vim /etc/profile
#添加下一下配置:
export PATH=/usr/local/service/mongodb-linux-x86_64-rhel70-4.4.2/bin:$PATH

#创建数据存储目录和日志目录
sudo mkdir -p /var/lib/mongodb
sudo mkdir -p /var/log/mongodb
sudo chown `whoami` /var/lib/mongodb     # 设置权限
sudo chown `whoami` /var/log/mongodb   # 设置权限

#开启服务
mongod --dbpath /var/lib/mongodb --logpath /var/log/mongodb/mongod.log --fork

#命令行连接mongod服务
mongo 127.0.0.1:27017/dbname --username superuser --password changeMeToAStrongPassword //
mongo "mongodb://rem_test:rem_test@192.168.255.38:27029,192.168.255.38:27030/rem?replicaSet=jiakaotong_test" //或者
#关闭服务 use admin db.shutdownServer()

服务启动配置

官方3.2配置文件,参考:https://www.jianshu.com/p/f179ce608391

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

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

net:
   port: 27017 #监听端口,默认27017
   bindIp: 127.0.0.1 #绑定监听的ip,deb和rpm包里有默认的配置文件(/etc/mongod.conf)里面默认配置为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 status接口、REST API以及JSON API以防止数据暴露和漏洞攻击
      enabled: false #是否启用HTTP接口、启用会增加网络暴露。3.2版本后停止使用HTTP interface
      JSONPEnabled: false #JSONP的HTTP接口
      RESTInterfaceEnabled: false #REST API接口
   # ssl: #估计用不到,所以没有自己看

security:
   authorization: enabled # enabled/disabled #开启客户端认证
   javascriptEnabled:  true #启用或禁用服务器端JavaScript执行

storage:
   dbPath: /Users/mhq/projects/db/mongo/test/ #数据库,默认/data/db,如果使用软件包管理安装的查看/etc/mongod.conf
   indexBuildRetry: true #重启时,重建不完整的索引
   # repairPath: <string>  #--repair操作时的临时工作目录,默认为dbPath下的一个_tmp_repairDatabase_<num>的目录
   journal: 
      enabled: true #启动journal,64位系统默认开启,32位默认关闭
      # commitIntervalMs: <num> #journal操作的最大时间间隔,默认100或30
   directoryPerDB: false #使用单独的目录来存储每个数据库的数据,默认false,如果需要更改,要备份数据,删除掉dbPath下的文件,重建后导入数据
   # syncPeriodSecs: 60 #使用fsync来将数据写入磁盘的延迟时间量,建议使用默认值
   engine: wiredTiger #存储引擎,mmapv1/wiredTiger/inMemory 默认wiredTiger

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>

# basisTech:
#    rootDirectory: <string>

主要配置项参考:https://blog.csdn.net/zhanaolu4821/article/details/87614708

#创建配置文件
vim /etc/mongod.conf

#主要配置
dbpath=/usr/local/mongodb304/data
#数据库日志存放目录
logpath=/usr/local/mongodb304/logs/mongodb.log 
#以追加的方式记录日志
logappend = true
#端口号 默认为27017
port=27017 
#以后台方式运行进程
fork=true 
 #开启用户认证
auth=true
#关闭http接口,默认关闭http端口访问
nohttpinterface=true
#mongodb所绑定的ip地址
bind_ip = 127.0.0.1 
#启用日志文件,默认启用
journal=true 
#这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false

quiet=true 

#按配置文件启动服务
mongod --config /etc/mongod.conf

 

设置用户权限

参考:

https://www.cnblogs.com/dbabd/p/10811523.html

MongoDB基本的角色

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)

其中MongoDB默认是没有开启用户认证的,也就是说游客也拥有超级管理员的权限。userAdminAnyDatabase:有分配角色和用户的权限,但没有查写的权限

use admin
db.createUser({user:"root",pwd:"password",roles:["root"]})
#
db.createUser(  
  {  
    user: "admin",  
    pwd: "password",  
    roles: [{role: "userAdminAnyDatabase", db: "admin"}]  
  }  
)
#修改用户密码
db.updateUser( "admin",{pwd:"password"});

#如果设置了开启auth,则需要使用账号密码登录,否则连上不能操作

#删除用户
db.system.users.remove({user:"football"});#需要root权限,会将所有数据库中的football用户删除
db.dropUser("football");#权限要求没有那么高,只删除本数据中的football用户

客户端连接

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
mongodb://这是固定的格式,必须要指定。
username:password@这是可选的. 如果设置,在连接数据库服务器之后,驱动都会尝试登陆这个数据库。
host1是这个URI唯一要填写的。它指定了要连接服务器的地址。
:portX可选的指定端口,如果不填,默认为27017 。
/database是要连接数据库的名称 ,这个参数和username:password@有关联。.如果没有指定,默认的数据库为admin。
?options 是连接参数. 要注意的是,如果database不填写,也要保留符号"/""?"。参数格式是name=value。如果填写多个分隔符为"&"或者";"

php的mongodb扩展

详细接口查询php手册

use MongoDB\BSON\ObjectID;
use MongoDB\Driver\BulkWrite;
use MongoDB\Driver\Command;
use MongoDB\Driver\Cursor;
use MongoDB\Driver\Exception\AuthenticationException;
use MongoDB\Driver\Exception\BulkWriteException;
use MongoDB\Driver\Exception\ConnectionException;
use MongoDB\Driver\Exception\InvalidArgumentException;
use MongoDB\Driver\Exception\RuntimeException;
use MongoDB\Driver\Manager;
use MongoDB\Driver\Query as MongoQuery;
use MongoDB\Driver\ReadPreference;
use MongoDB\Driver\WriteConcern;

 

posted @ 2021-01-07 22:19  小匡程序员  阅读(203)  评论(0编辑  收藏  举报