MongoDB记录(坑在末尾)

Mongo数据库基本配置

  • 基本配置
  • 密码配置
  • pymongo认证
  • 参考资料

基本配置

基本配置包括

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‘)

参考资料

原文地址:https://www.cnblogs.com/yuzw/p/10352857.html

时间: 2024-10-07 20:31:47

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

centos下安装mongodb记录

1. 卸载已有mongodb数据库 1 2 /etc/init.d/mongod stop yum erase $(rpm -qa | grep mongodb-org) 删除mongodb相关目录文件等,例如: 1 2 rm -r /var/log/mongodb/ rm -r /var/lib/mongo 2. 下载最新mongodb 1 wget https: 3. 移动下载文件并解压 1 2 mv ./mongodb-linux-x86_64-rhel62-3.2.9.tgz /usr/

MongoDB踩坑记录

启动MongoDB: mongod --config mongod.cfg --auth --fork --auth 开启身份认证 --fork 后台启动服务 连接:mongo 设置密码: use admin db.createUser({user: "root", pwd: "123456", roles:["root"]}) db.auth("root","123456") Centos设置防火墙 阿里

跟刷 《 Android Studio 单刷第一行代码》 记录坑

跟刷系列   Android Studio 单刷第一行代码 原帖地址http://www.cnblogs.com/DebugLife/p/4355687.html 记录自己的失误,也算是个督促自己了. 1. 坑--去除标题栏 在 Activity 的 onCreate()方法中添加 requestWindowFeature(Window.FEATURE_NO_TITLE);

转:MongoDB 那些坑

原文:https://ruby-china.org/topics/20128 MongoDB 是目前炙手可热的 NoSQL 文档型数据库,它提供的一些特性很棒:如自动 failover 机制,自动 sharding,无模式 schemaless,大部分情况下性能也很棒.但是薄荷在深入使用 MongoDB 过程中,遇到了不少问题,下面总结几个我们遇到的坑.特别申明:我们目前用的 MongoDB 版本是 2.4.10,曾经升级到 MongoDB 2.6.0 版本,问题依然存在,又回退到 2.4.10

CentOS 6.5下通过yum安装MongoDB记录

最近想尝试一下英特尔的基于WebRTC协同通信开发套件,其中的CS_WebRTC_Conference_Server_MCU依赖MongoDB. MongoDB是什么? MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 安装MongoDB 参考:https://docs.mongodb.org/gettin

MongoDB 那些坑(转)

MongoDB 是目前炙手可热的 NoSQL 文档型数据库,它提供的一些特性很棒:如自动 failover 机制,自动 sharding,无模式 schemaless,大部分情况下性能也很棒.但是薄荷在深入使用 MongoDB 过程中,遇到了不少问题,下面总结几个我们遇到的坑.特别申明:我们目前用的 MongoDB 版本是 2.4.10,曾经升级到 MongoDB 2.6.0 版本,问题依然存在,又回退到 2.4.10 版本. MongoDB 数据库级锁 坑爹指数:5星(最高5星) MongoD

mongodb记录

记录1: node 连接mongodb时提示服务器已关闭(其实服务器已启动运行正常),原因:在一个连池下有个共用的close直接关闭数据库,例子: //错误代码 database.open(function(err, db) { var userForm = db.collection('user'); userForm.find({userName:arg.userName}).toArray(function(err,curt) { console.log(err,curt) databas

newlisp通过JavaScript查询MongoDB记录

因为MongoDB支持执行JavaScript文件查询,所以newlisp就可以通过这种方式获得查询结果. 下面是我的newlisp模块: (context 'MONGO_JS_TOOL) (define (query db-name js-file) (set 'cmd (format "mongo localhost/%s %s" db-name js-file)) (set 'r (exec cmd)) (set 'r (STRING_LIST:remove r "^M

MongoDB记录操作日志的Base类实现

mongodb-context.xml配置: <?xml version="1.0" encoding="UTF-8"?>   <beans xmlns="http://www.springframework.org/schema/beans"        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"        xmlns:context=&