1. 程式人生 > >windows下mongodb設定使用者名稱密碼&用python連線

windows下mongodb設定使用者名稱密碼&用python連線

環境:

主機:WIN10

python版本:3.5

mongodb版本:3.4.2

開發環境:pyCharm


mongodb設定使用者名稱密碼:

編寫mongodb配置檔案mongodb.conf
dbpath=F:\test\db1
logpath=F:\test\log\mongodb.log
logappend=true
bind_ip=127.0.0.1
port=27019
#fork=true
master=true
auth=false
注意:設定使用者名稱密碼前將auth引數設定為false

在命令列視窗執行mongodb伺服器
輸入命令:mongod -f f:/test/mongodb.conf

在命令列視窗執行shell介面配置使用者名稱密碼
注意:直接輸入mongo連線資料庫預設ip是127.0.01,埠是270717
輸入命令:mongo.exe mongodb://localhost:27019

在shell介面配置賬號管理員root,利用此賬號可以增加其他賬號
注意:賬號管理員沒有讀寫的許可權,只能增加其他賬號
輸入命令:use admin
輸入命令:db.createUser({user:"root",pwd:"root",roles:[{"role":"userAdminAnyDatabase","db":"admin"}]}) 

在shell介面給資料庫db1增加賬號jdh11:
輸入命令登陸賬號管理員:db.auth("root", "root")
輸入命令:db.createUser({user:"jdh11",pwd:"123456",roles:[{"role":"readWrite","db":"db1"}]})
許可權說明:
userAdminAnyDatabase 有分配角色和使用者的許可權,沒有讀寫的許可權
root  超級管理員
readWrite  有讀寫許可權
read  有讀許可權

重新執行mongodb伺服器
將mongodb.conf中的auth設定為true
輸入命令:mongod -f f:/test/mongodb.conf

重新執行shell:
輸入命令:mongo.exe mongodb://localhost:27019

測試賬號是否成功:
輸入命令切換到db1資料庫:use db1
輸入show collections,彈出錯誤:
> show collections
2017-02-11T13:18:46.524+0800 E QUERY    [thread1] Error: listCollections failed: {
        "ok" : 0,
        "errmsg" : "not authorized on db1 to execute command { listCollections: 1.0, filter: {} }",
        "code" : 13,
        "codeName" : "Unauthorized"
} :

[email protected]/mongo/shell/utils.js:25:13
[email protected]/mongo/shell/db.js:805:1
[email protected]/mongo/shell/db.js:817:19
[email protected]/mongo/shell/db.js:828:16
[email protected]/mongo/shell/utils.js:748:9
[email protected]/mongo/shell/utils.js:645:15
@(shellhelp2):1:1

登陸賬號:
注意:要切換到admin資料庫登陸,完整登陸流程:
> use admin
switched to db admin
> db.auth("jdh11", "123456")
1
> use db1
switched to db db1
> show collections
col
>

用python連線mongodb資料庫
配置資料庫引數程式碼:
HOST = '0.0.0.0'
PORT = 12800

DATABASE_IP = '127.0.0.1'
DATABASE_PORT = 27019
DATABASE_NAME = 'db1'


連線程式碼:

from pymongo import MongoClient
from config import *

client = MongoClient(DATABASE_IP, DATABASE_PORT)
db_auth = client.admin
db_auth.authenticate("jdh11", "123456")
db = client[DATABASE_NAME]

collection = db.col
print(list(collection.find({'name': 'jdh11'})))

參考連結:
MongoDB 教程
Mongodb 3.2 開啟密碼認證
Python資料庫-連結mongodb帶使用者驗證
Tutorial


---------------------
作者:jdh99
來源:CSDN
原文:https://blog.csdn.net/jdh99/article/details/54982300
版權宣告:本文為博主原創文章,轉載請附上博文連結!