epel自带2.6版本的MongoDB,在此安装MongoDB v3.4,方法如下: 官方安装文档: https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/
基本思路:创建一个最新版本MongoDB的yum源,然后yum安装。
[root@adailinux ~]# cd /etc/yum.repos.d/ [root@adailinux yum.repos.d]# vim mongodb-org-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=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc [root@adailinux yum.repos.d]# yum list |grep mongodb mongodb-org.x86_64 3.4.9-1.el7 mongodb-org-3.4 mongodb-org-mongos.x86_64 3.4.9-1.el7 mongodb-org-3.4 mongodb-org-server.x86_64 3.4.9-1.el7 mongodb-org-3.4 mongodb-org-shell.x86_64 3.4.9-1.el7 mongodb-org-3.4 mongodb-org-tools.x86_64 3.4.9-1.el7 mongodb-org-3.4
即,安装包创建完成!
[root@adailinux ~]# yum install -y mongodb-org
这样就安装好了,需要等待较长时间,耐心…
[root@adailinux ~]# vim /etc/mongod.conf # where to write logging data. systemLog: destination: file logAppend: true path: /var/log/mongodb/mongod.log # Where and how to store data. storage: dbPath: /var/lib/mongo journal: enabled: true # how the process runs processManagement: fork: true # fork and run in background pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile # network interfaces net: port: 27017 bindIp: 127.0.0.1,192.168.8.131 # Listen to local interface only, comment to listen on all interfaces. ##绑定多个IP时用逗号分隔 #security: #operationProfiling: #replication: #sharding: ## Enterprise-Only Options #auditLog: #snmp:
[root@adailinux ~]# systemctl start mongod [root@adailinux ~]# ps aux |grep mongod mongod 9258 1.8 7.2 972188 35752 ? Sl 18:16 0:00 /usr/bin/mongod -f /etc/mongod.conf [root@adailinux ~]# netstat -lntp |grep mongo tcp 0 0 192.168.8.131:27017 0.0.0.0:* LISTEN 9258/mongod
启动完成!
[root@adailinux ~]# mongo >
如果不是监听本地IP和27017端口的话需要指定IP和端口: --port : 指定端口 --host : 指定IP
如果设置了密码,则在连接时需要指定用户名和密码:
[root@adailinux ~]# mongo -uusername -p'passwd' --authenticationDatabase dbname
[root@adailinux ~]# mongo 切换到admin库: > use admin switched to db admin 创建用户并设定密码: > db.createUser( { user: "admin", customData: {description: "superuser"}, pwd: "admin122", roles: [ { role: "root", db: "admin" } ] } ) ##用户名:admin;密码:admin122 ##user指定用户,customData为说明字段,可以省略,pwd为密码,roles指定用户的角色,db指定库名 列出所有用户: > db.system.users.find() ##执行此操作前必须先切换到admin库 查看当前库下所有用户: > show users 删除用户: > db.createUser({user:"adai",pwd:"123456",roles:[{role:"read",db:"testdb"}]}) ##先添加一个用户 > show users "_id" : "admin.adai", "_id" : "admin.admin", 删除: > db.dropUser('adai') true > show users; "_id" : "admin.admin"
如果要用户生效,还需要编辑启动脚本:
[root@adailinux ~]# vim /usr/lib/systemd/system/mongod.service Environment="OPTIONS=--auth -f /etc/mongod.conf" #在options后面添加--auth参数 重载服务: [root@adailinux ~]# systemctl daemon-reload [root@adailinux ~]# systemctl restart mongod [root@adailinux ~]# ps aux |grep mongod mongod 9535 19.0 7.1 971164 35264 ? Sl 18:46 0:00 /usr/bin/mongod --auth -f /etc/mongod.conf
再次连接MongoDB:
[root@adailinux ~]# mongo --host 127.0.0.1 --port 27017 -u"admin" -p"admin122" --authenticationDatabase "admin"
注意: 创建用户的时候要针对一个库,登录的时候也需要指定对应的库。
> db.createUser( { user: "test1", pwd: "123aaa", roles: [ { role: "readWrite", db: "db1" }, {role: "read", db: "db2" } ] } ) #test1用户对db1库读写,对db2库只读。 #之所以先use db1,表示用户在 db1 库中创建,就一定要db1库验证身份,即用户的信息跟随随数据库。 #比如上述 test1虽然有 db2 库的读取权限,但是一定要先在db1库进行身份验证,直接访问会提示验证失败。 认证: > db.auth('test1','123aaa') 1 ##在哪个库下创建的用户就在哪个库进行认证操作 认证完成之后就可以使用相应的库了: > use db2
语法: db.createCollection(name,options)
[root@adailinux ~]# mongo --host 127.0.0.1 --port 27017 -u"admin" -p"admin122" --authenticationDatabase "admin" MongoDB shell version v3.4.9 connecting to: mongodb://127.0.0.1:27017/ MongoDB server version: 3.4.9 > use db1 switched to db db1 创建集合: > db.createCollection("mycol", { capped : true, size : 6142800, max : 10000 } ) { "ok" : 1 } 查看集合: > show tables mycol > show collections mycol 向集合中插入数据: > db.Account.insert({AccountID:1,UserName:"adai",password:"123456"}) WriteResult({ "nInserted" : 1 }) ##如果集合不存在,直接插入数据,则mongodb会自动创建集合 更新: > db.Account.update({AccountID:1},{"$set":{"Age":20}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) 查看所有文档: > db.Account.find() { "_id" : ObjectId("59d4c22add463fc263361e3b"), "AccountID" : 1, "UserName" : "adai", "password" : "123456", "Age" : 20 } 根据条件查看文档: > db.Account.find({AccountID:1}) 根据条件删除文档: > db.Account.remove({AccountID:1}) WriteResult({ "nRemoved" : 1 }) 删除所有文档: > db.Account.drop() true 查看集合状态: > db.printCollectionStats() ##前提是先进入一个文档use dbname
(adsbygoogle = window.adsbygoogle || []).push({});
本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。
我来说两句