一 MongoDB的安装配置

(1)下载并安装:

MongoDB安装包下载地址:https://www.mongodb.com/download-center

[root@localhost src]# tar -zxvf mongodb-linux-x86_64-rhel62-3.4..tgz
[root@localhost src]# mv mongodb-linux-x86_64-rhel62-3.4. /usr/local/mongodb [root@localhost src]# cd /usr/local/mongodb
[root@localhost src]# cp /usr/local/mongodb/bin/mongo /usr/local/bin/
[root@localhost src]# cp /usr/local/mongodb/bin/mongo /usr/bin/
[root@localhost mongodb]# mkdir data
[root@localhost mongodb]# mkdir logs
[root@localhost mongodb]# echo > logs/mongodb.log

(2)创建属性文件mongodb.conf:

[root@localhost mongodb]# vim /usr/local/mongodb/mongodb.conf

其内容如下:

dbpath=/usr/local/mongodb/data/
logpath=/usr/local/mongodb/logs/mongodb.log
logappend=true
bind_ip=192.168.1.159
port=
fork=true

(3)添加mongodb控制脚本并设置开机自启动:

[root@localhost ~]# vim /etc/init.d/mongod

其脚本内容如下:

#!/bin/sh
#
#chkconfig:
#description: mongodb
start() {
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongodb.conf
} stop() {
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongodb.conf --shutdown
} restart() {
stop
sleep
start
} case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo $"Usage: $0 {start|stop|restart}"
exit
esac

给脚本添加可执行权限并设置开机自启动:

[root@localhost ~]# chmod a+x /etc/init.d/mongod
[root@localhost ~]# chkconfig mongod on

(4)启动mongodb:

  • 启动:[root@localhost ~]# service mongod start
  • 停止:[root@localhost ~]# service mongod stop
  • 重启:[root@localhost ~]# service mongod restart
注:如果想要启用MongoDb的Web界面,可以这样启动:
[root@localhost mongodb]# /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongodb.conf --rest

访问地址:http://192.168.1.159:28000/ ,MongoDB 的 Web 界面访问端口比服务的端口多1000

(5)访问数据库:

[root@localhost mongodb]# /usr/local/mongodb/bin/mongo 192.168.1.159:

列出所有的数据库:

> show dbs

连接到一个指定的数据库:

> use admin

显示当前数据库对象或集合:

> db

列出当前库的所有集合:

> show collections

(6)为mongodb添加账号密码认证:

由于mongodb默认安装是没有启用账号密码认证,这意味着任何人只要知道安装了mongodb的服务器地址和对应的端口就可以连接上,并可以修改里面的任何数据。因此,为了增强mongodb的安全性,我们需要给它配置上用于认证的账号、密码。

注意:下面的操作都是在未开启登录认证的情况下操作的,要是以及开启了认证,操作数据库可能需要认证权限。

首先通过无密码连接上mongodb,并添加相应权限的账号:

[root@localhost mongodb]# /usr/local/mongodb/bin/mongo 192.168.1.159:

1)首先来创建管理员用户:

> use admin

> db.createUser(
{ user: "admin",
customData: {description:"管理员用户"},
pwd: "admin",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)

如果需要创建管理员权限的账号,需要在admin这个库中创建。新安装的mongodb没有这个库,直接use admin即可。

至于这里的权限“userAdminAnyDatabase”到底是什么权限我将在下面列出

2)接下来创建普通角色用户:

> use test_news
>db.createUser(
  { user: "tdev",
pwd: "tdev",
roles: [ { role: "readWrite", db: "test_news" },
{ role: "dbAdmin", db: "test_news" }
]
}
)

这里选择了一个其他的普通数据库——test_news,然后创建了一个具有普通读写权限的用户——tdev

mongodb内置角色:

  • 数据库用户角色:read、readWrite;
  • 数据库管理角色:dbAdmin、dbOwner、userAdmin;
  • 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
  • 备份恢复角色:backup、restore;
  • 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
  • 超级用户角色:root,这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
  • 内部角色:__system

角色说明:

  • read:允许用户读取指定数据库
  • readWrite:允许用户读写指定数据库
  • dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
  • userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
  • clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
  • readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
  • readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
  • userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
  • dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
  • root:只在admin数据库中可用。超级账号,超级权限

查看拥有的用户:

> use test_news
> show users

查看所有的用户:

> use admin
> show collections
> db.system.users.find()

修改用户角色信息:

> use admin
>db.system.users.update({'_id':'admin.admin'},{$set:{'roles':[ { "role": "userAdminAnyDatabase", "db": "admin" },{ "role": "dbAdminAnyDatabase", "db": "admin" }, 
{ "role": "readWriteAnyDatabase", "db": "admin"}]}})

可以看出,这里给admin用户新添加了一个 dbAdminAnyDatabase 和readWriteAnyDatabase角色

删除用户:

> use admin
> db.system.users.remove({_id:"weather_province.admin"});

重启mongodb并启用密码认证:

[root@localhost ~]# vim /usr/local/mongodb/mongodb.conf

在文件末尾添加:

auth=true

重启mongodb:

[root@localhost ~]# service mongod restart

现在有两种方式进行用户身份的验证
第一种 (类似 MySql)
客户端连接时,指定用户名,密码,db名称

mongo --port  -u "adminUser" -p "adminPass" --authenticationDatabase "admin"

第二种
客户端连接后,再进行验证

mongo --port 

use admin
db.auth("adminUser", "adminPass") // 输出 1 表示验证成功

测试:

[root@localhost ~]# mongo 192.168.1.159:
> use admin
> db.auth("admin","admin")

连接加密数据库

xxx.db('mongodb://your name: your pwd@ ip :27017/Article');
your name:为用户名
your pwd:为密码

二 MongoDB的基本用法

(1)显示所有数据库:

> show dbs

(2)创建数据库:

> use zifangsky

注:如果这个库不存在将会自动创建

(3)插入文档:

> db.col.insert({title: '这是标题',
description: '这是描述信息',
by: 'zifangsky',
url: 'https://www.zifangsky.cn/',
})

注:这里表示向名字为“col”的集合(collection)插入数据,mongodb里面的collection可以简单理解为关系型数据库中的表

(4)查看已插入文档:

> db.col.find()

(5)更新文档:

语法格式如下:

db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)

参数说明:

  • query : update的查询条件,类似sql update查询内where后面的
  • update : update的对象和一些更新的操作符(如$,$inc…)等,也可以理解为sql update查询内set后面的
  • upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入
  • multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新
  • writeConcern :可选,抛出异常的级别

示例如下:

> db.col.update({'title':'这是标题'},{$set:{'title':'MongoDB'}})

(6)删除文档:

语法格式如下:

db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)

参数说明:

  • query :(可选)删除的文档的条件
  • justOne : (可选)如果设为 true 或 1,则只删除一个文档
  • writeConcern :(可选)抛出异常的级别

示例如下:

> use admin
> db.system.users.remove({_id:"weather_province.admin"});

(7)删除数据库:

> use zifangsky
> db.dropDatabase()

注:执行该语句之后 zifangsky 这个库将会被删除,请慎重

参考:

 转自:https://www.zifangsky.cn/923.html

Linux下的MongoDB安装配置以及基本用法示例的更多相关文章

  1. MongoDB和Java(1):Linux下的MongoDB安装

    最近花了一些时间学习了下MongoDB数据库,感觉还是比较全面系统的,涉及了软件安装.客户端操作.安全认证.副本集和分布式集群搭建,以及使用Spring Data连接MongoDB进行数据操作,收获很 ...

  2. Linux下Kafka单机安装配置方法(图文)

    Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计.这个独特的设计是什么样的呢 介绍 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了 ...

  3. Linux下Kafka单机安装配置方法

    Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计.这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统术语: •Kafka将消息以topi ...

  4. Linux 下编译并安装配置 Qt 4.53全过程

    最近准备做 Nokia 的 Symbian,Maemo 下触摸屏开发.考虑到程序的跨平台可移植性,最终选择使用 Qt 开发.相对来说,国内关于 Qt 相关文档并不算很多.作者将 Linux 下编译并安 ...

  5. Linux下DHCP服务安装配置

    简介 安装配置 一.简介 DHCP (Dynamic Host Configuration Protocol,动态主机管理协议)是一种基于UDP协议且仅限用于局域网的网络协议,主要用途是为局域网内部设 ...

  6. Linux下的Mysql安装 & 配置

    Hive的数据,是存在HDFS里的.此外,hive有哪些数据库,每个数据库有哪些表,这样的信息称之为hive的元数据信息. 元数据信息不存在HDFS里.而是存在关系型数据库里,hive默认用的是der ...

  7. (0.2)linux下Mysql的安装配置与管理入门(目录篇)

    本章学习内容: 1.基于Linux平台的Mysql项目场景介绍 1.1.互联网各类网站.购物网站.门户网站.博客系统.IDC,云平台,VPS,虚拟主机空间,论坛,嵌入式. 2.mysql数据库运行环境 ...

  8. linux 下ftp的安装配置 图文教程

    0.安装ftp的前置条件是关掉SElinux # vi /etc/selinux/config 修改 SELINUX=” disabled ” ,重启服务器.若相同,则跳过此步骤. 1. 可先查看是否 ...

  9. Linux下TFTP的安装,配置和操作

    注:转载他人,仅供自己研究学习使用 TFTP是用来下载远程文件的最简单网络协议,它其于UDP协议而实现.嵌入式linux的tftp开发环境包括两个方面:一是linux服务器端的tftp-server支 ...

随机推荐

  1. IIS7.5配置Asp.net项目出现HTTP 错误 404.17 - Not Found 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理。

    近日在将一个Asp.net项目部署到IIS7.5上时却出现了HTTP 错误 404.17 - Not Found 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理. 因为IIS里面使用的都是默 ...

  2. dubbo+maven多模块项目单元测试

    基本上就是记录各种报错的解决办法.基本上就是将散落在项目各个模块中的配置文件复制到测试模块中. 目录结构: ——src ——java ——test ——java ——DaoTest.java ——re ...

  3. WPF代码模板-布局部分

    Grid 两行和三列 <Grid ShowGridLines="True"> <Grid.RowDefinitions> <RowDefinition ...

  4. 图像处理MATLAB源代码

    图像反转 I=imread('nickyboom.jpg'); J=double(I); J=-J+(256-1);                 %图像反转线性变换 H=uint8(J); sub ...

  5. Linux清理磁盘空间

    1.首先确定是否是磁盘满了 命令:   df -h 参数说明: -a:列出所有的文件系统,包括系统特有的/proc等文件系统 -k:以KB的容量显示各文件系统 -m:以MB的容量显示各文件系统 -h: ...

  6. secureCRT简单设置(学习笔记二)

    菜鸟记录. 一.更改终端类型 选项-全局选项-默认会话-编辑默认设置-终端-仿真-右侧选择类型,下方设置缓冲区大小 二.设置字体和外观 上方窗口外观-右侧设置-字体设置字体类型大小,下面光标可以设置光 ...

  7. 算法笔记_193:历届试题 连号区间数(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 小明这些天一直在思考这样一个奇怪而有趣的问题: 在1~N的某个全排列中有多少个连号区间呢?这里所说的连号区间的定义是: 如果区间[L, R ...

  8. 网站中超链接方式直接添加QQ好友

    使用情景: 在图中点击图片,会弹出添加qq好友的窗口进行好友添加. 链接如下: tencent://AddContact/?fromId=45&fromSubId=1&subcmd=a ...

  9. exception PLS-00403: expression 'V_END' cannot be used as an INTO-target of a SELECT/FETCH statement

      exception PLS-00403: expression 'V_END' cannot be used as an INTO-target of a SELECT/FETCH stateme ...

  10. jQuery 源码学习笔记

    //检测 window 中新增的对象 //first var oldMap = {}; for(var i in window) { oldMap[i] = 1; } //second for(var ...