ubuntu安装mongdb & 常用命令

来源:互联网 发布:ipad如何清除缓存数据 编辑:程序博客网 时间:2024/06/15 20:12
查看软件包
# apt-cache show mongodb

安装
# apt-get install -y mongodb
安装完以后,会自动启动可以通过下面目录插件进程:
# pgrep mongod -l

# ps -ef | grep mongod


修改配置文件,设置远程访问,修改监听IP
vim /etc/mongodb.conf 
bind_ip = 0.0.0.0


默认监听端:0.0.0.0:27017,无认证,任何人都可以连接。
默认情况下,mongod也是没有管理员账户的。因此除非你在admin数据库中使用db.addUser()命令添加了管理员帐号,且使用–auth参数启动mongod,否则在数据库中任何人都可以无需认证执行所有命令。包括delete和shutdown。
此外,mongod还会默认监听28017端口,同样是绑定所有ip。这是一个mongod自带的web监控界面。从中可以获取到数据库当前连接、log、状态、运行系统等信息。如果你开启了–rest参数,甚至可以直接通过web界面查询数据,执行mongod命令。


mongodb有两种用户:admin用户和特定数据库用户。admin用户拥有最高的权限,而特定数据库用户则只能访问特定的数据库。
当mongodb的admin库里没有任何用户的时候,也就是说整个mongodb没有一个mongodb用户的时候,即便–auth权限需求打开了,用户还是可以通过localhost界面进入mongodb进行用户设置,否则的话整个mongodb就完全没法访问了。而当这个用户创建完成之后,之后的用户登录和操作就需要授权了,不是直接登录就能使用的了。
mongodb使用时要注意,即便是一个admin用户,授权也必须在admin数据库下进行,而不能在其他数据库下进行。而授权之后admin用户就可以在任何数据库下进行任何操作了。当然数据库级别的用户在他自己的数据库下授权之后是不能到其他数据库进行操作的。


配置文件mongod.conf中的常用配置参数
dbpath = /data/mongodb
logpath = /data/mongodb/mongodb.log
logappend = true
port = 27017
fork = true
auth = true


启动于关闭
# service mongodb stop
# service mongodb start
默认安装以后是启动的


卸载mongodb
停止服务、删除程序文件、删除数据文件和日志文件的目录
# service mongod stop
# apt-get purge mongodb-org*
# rm -r /var/log/mongodb 
# rm -r /var/lib/mongodb


连接mongodb
# mongo 127.0.0.1:27017


数据数据库
# mongo



常用数据库命令:
查看数据库
> show dbs
admin和local为系统默认内置数据库


添加用户
> db.addUser('root','1q2w3e')


创建用户和远程访问
创建管理员
> db.createUser({user: "root",pwd: "1q2w3e",roles: [ "readWrite", "dbAdmin" ]});


查看当前数据库下的所有表
> use admin
> show collections


MongoDB默认设置为无权限访问限制,我们需要先把它设置成为需要权限访问
在mongodb路径的bin目录下,执行
# mongod --dbpath  /mydata/mongodb/db  --auth 


给某个数据库添加用户访问权限
> db.addUser('testuser','pwd')
> db.auth('testuser','pwd')


删除用户
> db.removeUser('testuser')




修改绑定IP
# vi /etc/mongod.conf 


开启mongodb防火墙端口
# 省略


改变mongodb的数据存储和日志路径
mongodb安装以后,默认数据文件:/var/lib/mongodb 日志文件:/var/log/mongodb
mkdir -p /mydata/mongodb/data
mkdir -p /mydata/mongodb/log


修改mongodb的配置文件:mongod.conf
# mongod.conf


# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/


# Where and how to store data.
storage:
  dbPath: /mydata/mongodb/data
  journal:
    enabled: true


systemLog:
  destination: file
  logAppend: true
  path: /mydata/mongodb/log/mongod.log


# network interfaces
net:
  port: 27017
  #bindIp: 127.0.0.1


指定配置文件启动:
# mongod -f /mydata/mongodb/mongod.conf &


创建数据库
如果没有mydb数据库的话,直接执行下面命令,会创建数据库
> use mydb
查看数据库
> show dbs
命令检查当前数据库状态

> db.stats()


####

帮助
> db.test01.help()


创建表
> db.createCollection("test01")
> db.createCollection("test02",{capped:true, size:10000}) { "ok" : 1 }


修改数据表名
> db.test01.renameCollection("mytest01")


查看所有记录
> db.test01.find()


查询一条记录
> db.test01.findOne()


查询聚集中UserName包含“keyword”关键字的记录
> db.test01.find({"UserName":/keyword/})


查询聚集中UserName以"keyword" 开头的记录
> db.test01.find({"UserName":/^keyword/})


查询聚集中指定列
> db.test01.find({},{"UserName":1,"Email":1})    --1:true


查询聚集中排除指定列
> db.test01.find({},{"UserName":0})    --0:false


查询聚集中指定列,且Age > 20
> db.test01.find({"Age":{"$gt":20}},{"UserName":1,"Email":1})


常用排序查询
> db.test01.find().sort({"UserName":1}) -- 升序
> db.test01.find().sort({"UserName":-1}) --降序


查询总记录条数
> db.test01.find().count()
> db.test01.find({"Age":{"$gt":20}}).count()


插入新记录
db.test01.insert({ID:1,UserName:"Frank",info:"China",Age:15,Email:"test@test.com",CreateDate:"2017-06-05 14:36:95"})

db.test01.insert({ID:2,UserName:"Lucy",info:"China",Age:16,Email:"test2@test.com",CreateDate:"2017-06-05 15:36:95"})


删除指定的记录

db.test01.remove({ID:2})

remove删除表中的记录,删除是永久性的,不能撤销


删除connection的所有记录

db.test01.remove()

不指定参数,删除所有记录


删除指定的connection

db.test01.drop()


remove和drop的区别:

remove将connection的文档删除,但不删除connection自身,也不删除connection的索引。

drop不仅删除connection的文档,也会删除connection自身,同时也会删除在connection上创建的索引。


删除当前数据库

use mytestdb

db.dropDatabase()

show dbs


插入一条较长的记录(较长的字符串值)

插入一个包含8M(8388608字节)的字符串的字段的记录:
for(var i=1, j="a"; i<=8388608; i++){
  j=j+"a"
  if(i==8388608) {
  db.table8m.insert({ID:5,name:"Jack",info:j,CreateDate:"2017-08-24 16:35:08"})
  }
}


> for(var i=1, j="a"; i<=8388608; i++){
...   j=j+"a"
...   if(i==8388608) {
...   db.table8m.insert({ID:5,name:"Jack",info:j,CreateDate:"2017-08-24 16:35:08"})
...   }
... }
WriteResult({ "nInserted" : 1 })



插入一个包含15M的字符串的字段的记录:
for(var i=1, j="a"; i<=15728640; i++){
  j=j+"a"
  if(i==15728640) {
  db.table01.insert({ID:1,name:"test16m",info:j,CreateDate:"2017-08-24 16:35:08"})
  }
}


原创粉丝点击