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({});