python3 使用mongo数据库

0让服务器端开启服务

sudo mongod --port 27017 --dbpath /data/db --logpath /data/log --logappend --fork --auth

在位置为/data/db的位置上开始数据库服务,端口27017

--logpath 日志存放路径

--logappend 日志追加的形式添加日志

--fork 后台运行进程

如果前台运行的数据库,可以关闭终端就能关闭服务

如果使用--fork在后台运行mongdb服务,那么就要通过向服务器发送shutdownServer()消息来关闭。
 
1、普通命令:
$ ./mongod
> use admin
> db.shutdownServer()
 
要注意的是,这个命令只允许在本地,或是一个经过认证的客户端。

1初始化

创建完数据库之后,就可以直接键入mongo + 网址(如果端口是默认的27017,本地的数据库的话不需要加网址)

use admin --选择admin数据库

db.createUser({user: 'admin', pwd: 'admin123', roles: [{role: 'root', db: 'admin'}]})

然后就会显示成功添加用户

2连接数据库

之后进入数据库有两种方法

第一种是:

1mongo 2use admin 3db.auth(‘admin’,‘admin123’)

第二种是

mongo -u admin -p admin123 127.0.0.1/admin

我觉得还是第一种方法好记一点

如果不这么做,你在数据库下面的操作会显示没有授权

3添加和删除用户

db.createUser({user: 'admin', pwd: 'admin123', roles: [{role: 'root', db: 'admin'}]})这跟之前的操作差不多

用户的role有root read write readWrite

但一定要在相应的数据库下面,不然操作十分繁琐

4添加数据

db.Hello.insert({name:'World'})

db.Hello.find()

 

遇到的大坑:

在远程连接的时候,总是显示用户鉴权失败,这是因为在3.0版本以后,服务器出现了一个新的SCRAM-SHA-1认证方式 ,这需要第三方工具配合,

正常远程连接,认证的方式是MONGODB-CR,我们可以用

use admin

db.system.users.find()

显示的结果里面credentials如果有SCRAM-SHA-1认证方式的用户都要删掉

解决方式如下

首先关闭认证,修改system.version文档里面的authSchema版本为3,初始安装时候应该是5,命令行如下: 
> use admin 
switched to db admin 
>  var schema = db.system.version.findOne({"_id" : "authSchema"}) 
> schema.currentVersion = 3 

> db.system.version.save(schema) 
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

再重新添加用户的话,认证方式就变成了 MONGODB-CR

之后在启动服务器进程(带--auth)。

原文地址:https://www.cnblogs.com/daibigmonster/p/7979058.html