Mongo数据库基本配置


基本配置

基本配置包括

1.端口号:默认27017,安全性较低

2.数据库文件位置

3.日志文件位置

4.日志写入模式

5.密码认证

6.后台运行

配置文件如下

# 文件名 mongodb.conf
# 修改默认端口,
port=27999 # 数据库位置
dbpath=/data/db # 日志文件位置
logpath=/data/log/mongodb.log # 设置为后台运行
fork=true # 默认为覆盖,设置为追加
logappend=true # 是否开启认证
auth=false

运行mongod --config /usr/local/mongodb/mongodb.conf,登录时mongo --port=27999指定配置里的端口才能登录

这样,无密码的后台运行的 mongodb 就启动了。

注意:

错误:ERROR: child process failed, exited with error number 1

原因:错误代码为1是因为配置文件缺失,如上配置即是目录文件缺失,需要将日志路径指定为一个文件,而不是文件夹,一开始配置可以指定为文件夹,我是后面追加配置的,所以指定文件才能运行。


密码配置

以上配置没有密码认证,这样数据的安全性得不到保障,所以最好添加密码

需要用到的命令

use admin
db.createUser({user:"root",pwd:"123456",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})

无密码状态下登录MongoDB服务器,进入admin数据库,运行db.creatUser({user:'root', pwd:"123456", roles:[{role:"userAdminAnyDatabase", db:"admin"}]})添加相应的用户名跟密码以及相应的权限

kill掉原来的进程,再更改配置,再次运行(现在配置如下,即将auth改成true)

# 修改默认端口
port=27999 # 数据库位置
dbpath=/data/db # 日志文件位置
logpath=/data/log/mongodb.log # 设置为后台运行
fork=true # 默认为覆盖,设置为追加
logappend=true # 开启认证
auth=true=

登录步骤

1.运行这步就不用说了,基本配置里有

2.进入admin数据库,即use admin

3.运行db.auth('root', '123456')进行验证,成功为1,失败为0


PyMongo认证

分两种认证,如配置一样,即不带密码和带密码,取决于数据库是否设置了密码

不带密码的认证

不密码的直接上代码

from pymongo import MongoClient
# 不带密码的直接上 ip地址 和 端口号
client = MongoClient("localhost", 27999)

带密码的认证

带密码认证需要根据不同版本的数据库来选择

先上一张图

以上图片是pymongoauthenticate()认证函数的参数说明

鉴于英语不好,google翻译一张

简单的来说,取决于参数mechanism

  • 默认MONGODB-CR来连接3.0
  • 往后的则使用SCRAM-SHA-1来连接3.0-3.6,和4.0+

因为我的是4.0.4,所以我使用SCRAM-SHA-1

注意:要先切换到admin数据库,否则会报错pymongo.errors.OperationFailure: Authentication failed.

代码如下

from pymongo import MongoClient

client = MongoClient("localhost", 27999)
admin = client.admin
admin.authenticate("root", "123456", mechanism='SCRAM-SHA-1')

你以为这样就搞定了吗?不

以上的密码的用户是管理员用户,具体可进去参考资料之权限说明看

在admin数据库下为kencery用户建立了一个userAdminAnyDatabase角色,使用这个用户来管理用户,可以通过这个角色来创建、删除角色

但是这个用户无法在其他数据库进行读写操作,提示错误not authorized on web to execute command ,即使我在admin认证了root用户,仍不行,所以我切换到数据库新创一个用户

use web
db.createUser({user:'web', pwd:'web', roles:[{role:'readWrite', db:'web'}]})

用pymongo登录的时候,使用该用户(不用登录root),即可对该数据库进行读写操作。如果命令行登录mongo提示认证用户过多,退出重登就行(原因可能是刚才登录了root所致)

from pymongo import MongoClient

client = MongoClient("localhost", 27999)
admin = client.admin
admin.authenticate("web", "web", mechanism='SCRAM-SHA-1')

参考资料

MongoDB记录(坑在末尾)的更多相关文章

  1. mongodb 踩坑记录

    Map-Reduce Map-Reduce 是 mongodb 处理批量数据的大杀器,凡是数据量大并且定时处理能满足需求的,都可以试着扔给 mongodb,让它去 Map-Reduce. 以下截取自文 ...

  2. MongoDB 那些坑

    MongoDB 是目前炙手可热的 NoSQL 文档型数据库,它提供的一些特性很棒:如自动 failover 机制,自动 sharding,无模式 schemaless,大部分情况下性能也很棒.但是薄荷 ...

  3. 公网访问阿里云数据库MongoDB——填坑日记

    业务情景 两台服务器,一台阿里云ECS云服务器(专用网络),另一台是阿里云数据库MongoDB,处于安全考虑MongoDB是不运行外网连接的,那接下来就看怎么实现公网访问. 看到上面红色的网络类型描述 ...

  4. MongoDB 那些坑(转)

    MongoDB 是目前炙手可热的 NoSQL 文档型数据库,它提供的一些特性很棒:如自动 failover 机制,自动 sharding,无模式 schemaless,大部分情况下性能也很棒.但是薄荷 ...

  5. 使用MongoDB 记录业务日志

    最近公司有个需求,要对业务日志进行记录并根据日志排查问题,以前都是使用log4net之类的日志组件来记录到文件,这种方式已经不能满足业务的需要,因为日志文件会很大,即使进行分割后,查找也是很不方便,何 ...

  6. 【运维相关】MongoDB那些坑

    前言 某个早期技术债务项目线上有一个mongoDB服务,用途很简单,存一些文件而已.不过用户那边突然报个bug说上边的图片丢失了,起初没当回事认为是代码遇到错了,直到后来看了用户详细的bug复现后,登 ...

  7. createjs记录坑

    1.使用preloadjs加载资源: manifest = [ {src: "block.png", id: "ground"}, {src: "re ...

  8. mongodb 入坑

    一.安装mongodb https://www.mongodb.com/ 官网下载合适的版本,安装在C或者D盘,我选择的是默认路径C:\Program Files\MongoDB\Server\3.4 ...

  9. CentOS 6.5下通过yum安装MongoDB记录

    安装MongoDB 1.创建repo vi /etc/yum.repos.d/mongodb-org-3.6.repo   [mongodb-org-3.6]   name=MongoDB Repos ...

随机推荐

  1. [React] Forward a DOM reference to another Component using forwardRef in React 16.3

    The function forwardRef allows us to extract a ref and pass it to its descendants. This is a powerfu ...

  2. TI C66x DSP 系统events及其应用 - 5.6(INTMUX)

    系统event 0~127(包含了eventCombiner的输出event 0~3)与CPU支持的12个可屏蔽中断是通过INTMUX寄存器进行映射的(不包含NMI.RESET).能够选择将系统eve ...

  3. 【翻译自mos文章】ABMR:在asm 环境中測试Automatic Block Recover 特性的方法

    ABMR:在asm 环境中測试Automatic Block Recover 特性的方法 參考原文: ABMR: How to test Automatic Block Recover Feature ...

  4. 基于spark1.4的Spark-Sql

    Author: kwu 基于spark1.4的Spark-Sql,spark1.4.1在7月15刚公布.提供较好sql支持 1.怎样启动Spark-Sql 启动脚本例如以下 #!/usr/bin/en ...

  5. .NET 开发者必备的工具箱

    本文作者Spencer是一名专注于ASP.NET和C#的程序员,他列举了平时工作.在家所使用的大部分开发工具,其中大部分工具都是集中于开发,当然也有一些其它用途的,比如图片处理.文件压缩等. 如果你是 ...

  6. N数码问题的启发式搜索算法--A*算法python实现

    一.启发式搜索:A算法 1)评价函数的一般形式 : f(n) = g(n) + h(n) g(n):从S0到Sn的实际代价(搜索的横向因子) h(n):从N到目标节点的估计代价,称为启发函数(搜索的纵 ...

  7. VS2015启动显示ID为XXXX的进程当前未运行

    解决办法:在启动项目根目录下用文本编辑器打开Web项目下的{X}.csproj文件,然后查找 <WebProjectProperties>,将这一对标签之间的内容全部删除,然后再打开项目就 ...

  8. 关于iscroll.js插件的使用

    iscroll 作用: 可以让区域滚动效果好看一些 使用: 1. html结构 外面必须包一层盒子,切内部的元素要尽量简单,不然会影响滚动效果 <div id="wrapper&quo ...

  9. Android学习——碎片Fragment的使用

    一.碎片的简单用法(实现在一个活动中添加两个碎片,并让这两个碎片平分活动空间) 1.新建一个FragmentTest项目: 新建一个左侧碎片布局left_fragment.xml,代码如下:(只放置一 ...

  10. WPF自定义动画控件 风机

      一:创建WPF项目 二:在项目下添加文件Themes,在此文件下添加新项 ”资源词典“取名为 Generic.xaml  注意大小写,之前遇到因为大小写不对应,导致出错的情况Generic.xam ...