Django搭配MongoDB的一些坑

之前一直使用mysql,最近需要用到mongodb,发现坑挺多的。

一、安装

安装是直接在宝塔面板里安装的,默认安装位置如下

dbPath数据存储位置/www/server/mongodb/data

path,日志文件位置/www/server/mongodb/log/config.log

pidFilePathPID保存路径/www/server/mongodb/log/configsvr.pid

二、设置账号密码

1、连接xshell,切换到mongo目录cd /www/server/mongodb/bin

2、输入命令行mongo,进入mongodb环境

3、切换到 admin 数据库 use admin

4、给admin设置账号密码(注意引号必须要) user: 用户名,pwd: 用户密码,roles: 用来设置用户的权限,比如读,读写 等等

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

5、验证是否添加成功,db.auth('root','mima'),如果返回 ‘1’表示验证成功, 如果是 ‘0’ 表示验证失败。

6、刚才是给root设置密码,现在要给特定的每个库设置权限,比如demo库

6.1、切换到 demo 数据库use demo

6.2、db.createUser({user:'cccc',pwd:'demo_mima',roles:[{role:'readWrite',db:'demo'}]})

Read:允许用户读取指定数据库

readWrite:允许用户读写指定数据库

dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile

userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户

clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。

readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限

readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限

userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限

dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。

root:只在admin数据库中可用。超级账号,超级权限

三、换端口号

直接在宝塔面板里配置0.0.0.0允许外网访问

改ip、端口、和打开认证authorization

然后坑就来了,换了端口号无法进入mongo环境,会报错,解决办法,通过以下命令进入

1、先进入mongo目录 cd /www/server/mongodb/bin

2、mongod --port 12345(改后的端口号) --dbpath=/www/server/mongodb

3、mongo 127.0.0.1:12345

四、django连接

直接连接会认证失败,在后面加?authSource=admin&authMechanism=SCRAM-SHA-1')

from mongoengine import connect

connect(host='mongodb://user:pwd@ip:12345/demo?authSource=admin&authMechanism=SCRAM-SHA-1')

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容