python3 使用mongo数据库
0让服务器端开启服务
sudo mongod --port 27017 --dbpath /data/db --logpath /data/log --logappend --fork --auth
在位置为/data/db的位置上开始数据库服务,端口27017
--logpath 日志存放路径
--logappend 日志追加的形式添加日志
--fork 后台运行进程
如果前台运行的数据库,可以关闭终端就能关闭服务
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
3
> db.system.version.save(schema)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
再重新添加用户的话,认证方式就变成了 MONGODB-CR
之后在启动服务器进程(带--auth)。