MongoDB 开启用户认证并使用 PyMongo 连接

作者:袖梨 2022-06-29


登录 MongoDB shell 并切换到 admin 库

mongo
use admin

创建管理员用户

db.createUser(
  {
    user: "yourusername",
    pwd: "password",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

修改 /etc/init.d/mongod 并重启 MongoDB


OPTIONS=" -f $CONFIGFILE"
改为
OPTIONS=" --auth -f $CONFIGFILE"
 
/etc/init.d/mongod restart

登录并进行用户认证

mongo
use admin
db.auth("yourusername", "password")

也可以这样登录

mongo --port 27017 -u yourusername -p password --authenticationDatabase admin

认证成功后,创建普通用户,使用此用户登陆后即可对指定数据库进行操作

db.createUser(
  {
    user: "123",
    pwd: "123123",
    roles: [
    { role: "readWrite", db: "firstdb" },     # firstdb 库给予读写权限
    { role: "read", db: "products" },     # products 库给予读权限    
   ]
  }
)

使用 PyMongo 连接使用用户认证的 mongodb

from pymongo import MongoClient
MongoClient('mongodb://user:' + 'password' + '@127.0.0.1')

如果密码中含有 %,,/ 等符号,需要使用 urllib 进行转义

import urllib
from pymongo import MongoClient
password = urllib.quote_plus('pass/word%&/')
MongoClient('mongodb://user:' + password + '@127.0.0.1')

修改指定用户的密码

use admin
db.changeUserPassword("username", "newpassword")

删除指定用户

use admin
db.db.system.users.remove({user:"username"})

相关文章

精彩推荐