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;