如何保护我们的mongodb数据库?是不是可以改变我们的pymongo' MongoClient()'代码?

时间:2016-03-22 10:36:19

标签: python mongodb localhost admin database

嗨我有一个问题我怎么解决呢,问题是我有一个python代码连接到我的localhost上的mongodb数据库

    from pymongo import MongoClient
ip='localhost'
class Authentication():

    def __init__(self):
        try:
            client = MongoClient(host=host,port=port)
            db = client['Testdatabase']
            self.coll = db['testcollection']
            print 'database created successfully'
        except Exception('database not created') as e:
            print e
    def insert_data(self,data):
        if data:
            self.coll.save(data)

    def fetch_data(self):
        results = self.coll.find({})
        if results:
            for result in results:
                print result                           
    if __name__=='__main__':
        data = {'id':483,'name':'anil.c','age':32}
        auth = Authentication()
        auth.insert_data(data)                
        auth.fetch_data()

这很好...... 然后我在mongodb admin上创建了一个用户名&密码和enbeld authrization,之后我的数据库连接没有wroking为什么? 我确实将我的MongoClient更改为:

client = MongoClient('mongodb://username:password@127.0.0.1')

我需要它像:

client = MongoClient(host=host,port=port)

使用身份验证。 如果有人知道这个请给我建议。

1 个答案:

答案 0 :(得分:1)

这是非常简单的,你的管理员中的crate用户是这样的:

>use admin
>db.createUser({user: "Admin",pwd: "localhost",roles: [ { role: "root", db: "admin" } ] })

在您的代码中进行修改后,您将成功添加用户:

from pymongo import MongoClient
class Authentication():
    def __init__(self):
       try:
          password = urllib.quote_plus(MONGO['password'])
          user = 'admin'
          client = MongoClient('mongodb://'+user+':'+password+'@'+MONGO['host'])
                    db = client['Testdatabase']
                    self.coll = db['testcollection']
                    print 'database created successfully'
                except Exception('database not created') as e:
                    print e

转到mongo配置文件cd /etc/mongod.conf,编辑它,如果您使用的是版本< 2.6 make'auth = true'或者如果mongo版本> 3.0 authrization:启用 保存并重启你的monogd服务器,如:

$sudo service mongod start

它可以正常使用身份验证