MongoDB记录(坑在末尾)
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)
带密码的认证
带密码认证需要根据不同版本的数据库来选择
先上一张图

以上图片是pymongo中authenticate()认证函数的参数说明
鉴于英语不好,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记录(坑在末尾)的更多相关文章
- mongodb 踩坑记录
Map-Reduce Map-Reduce 是 mongodb 处理批量数据的大杀器,凡是数据量大并且定时处理能满足需求的,都可以试着扔给 mongodb,让它去 Map-Reduce. 以下截取自文 ...
- MongoDB 那些坑
MongoDB 是目前炙手可热的 NoSQL 文档型数据库,它提供的一些特性很棒:如自动 failover 机制,自动 sharding,无模式 schemaless,大部分情况下性能也很棒.但是薄荷 ...
- 公网访问阿里云数据库MongoDB——填坑日记
业务情景 两台服务器,一台阿里云ECS云服务器(专用网络),另一台是阿里云数据库MongoDB,处于安全考虑MongoDB是不运行外网连接的,那接下来就看怎么实现公网访问. 看到上面红色的网络类型描述 ...
- MongoDB 那些坑(转)
MongoDB 是目前炙手可热的 NoSQL 文档型数据库,它提供的一些特性很棒:如自动 failover 机制,自动 sharding,无模式 schemaless,大部分情况下性能也很棒.但是薄荷 ...
- 使用MongoDB 记录业务日志
最近公司有个需求,要对业务日志进行记录并根据日志排查问题,以前都是使用log4net之类的日志组件来记录到文件,这种方式已经不能满足业务的需要,因为日志文件会很大,即使进行分割后,查找也是很不方便,何 ...
- 【运维相关】MongoDB那些坑
前言 某个早期技术债务项目线上有一个mongoDB服务,用途很简单,存一些文件而已.不过用户那边突然报个bug说上边的图片丢失了,起初没当回事认为是代码遇到错了,直到后来看了用户详细的bug复现后,登 ...
- createjs记录坑
1.使用preloadjs加载资源: manifest = [ {src: "block.png", id: "ground"}, {src: "re ...
- mongodb 入坑
一.安装mongodb https://www.mongodb.com/ 官网下载合适的版本,安装在C或者D盘,我选择的是默认路径C:\Program Files\MongoDB\Server\3.4 ...
- 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 ...
随机推荐
- HDU 1429--胜利大逃亡(续)【BFS && 状态压缩】
胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...
- Delicious Apples (hdu 5303 贪心+枚举)
Delicious Apples Time Limit: 5000/3000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Other ...
- POJ 3280 Cheapest Palindrome DP题解
看到Palindrome的题目.首先想到的应该是中心问题,然后从中心出发,思考怎样解决. DP问题通常是从更加小的问题转化到更加大的问题.然后是从地往上 bottom up地计算答案的. 能得出状态转 ...
- Windows 7下Git SSH 创建Key【待解决?】
1.在桌面右键,git bash here 2.检查本机是否有ssh key设置 $ cd ~/.ssh 或cd .ssh 如果没有则提示: No such file or directory:此时需 ...
- 南海区行政审批管理系统接口规范v0.3(规划) 2.业务申报API 2.1.businessApply【业务申报】
{"v_interface":"2015987654327","c_project":"NH09A102"," ...
- POJ 1703 带权并查集
直接解释输入了: 第一行cases. 然后是n和m代表有n个人,m个操作 给你两个空的集合 每个操作后面跟着俩数 D操作是说这俩数不在一个集合里. A操作问这俩数什么关系 不能确定:输出Not sur ...
- DataTable和List相互转换的类
DataTable与List相互转换 .NET后台数据处理,从数据库中的捞出的数据格式一般是List和DataTable的格式.现在将两种格式相互转换的心得记录下来以便以后查找(直接上代码). pub ...
- 2.Ventuz Designer常用工具介绍
Ventuz Designer常用工具介绍 1. 打开Ventuz Designer 图1.1 2. Ventuz Designer第一个界面 图2.1 Recent Projects:最近创建的 ...
- ios - masonry第三方库使用自动布局(参考:http://www.cocoachina.com/ios/20141219/10702.html)
#import "ViewController.h" #import "Masonry.h" #define kWeakSelf(weakSelf) __wea ...
- Java基础11一常用类
1.包装类 byte---java.lang.Byte char---java.lang.Character short—java.lang.Short int---java.lang.Integer ...