本机 MongoDB 注册系统服务、启用security认证
目录
一、注册系统服务。
二、MongoDB 启用security(密码)认证。(Python)
一、注册系统服务。
- Win+ R =》services.msc。若在服务中找不到 MongoDB 服务,MongoDB 可能是非服务方式安装的。也就可以通过手动设置与安装注册系统服务。
- 找到 mongod.exe 所在目录。通常是安装 MongoDB 时位于 /bin 目录下。
- 打开命令提示符(需管理员启动),进入到 /bin 目录下。
- 指定配置文件并安装对应的服务。其中 mongod.cfg 或 mongod.cong 是配置文件。
- 按顺序执行对应的命令即可。--serviceName 后面的参数可自定义。
d:cd D:\mongodb\binmongod.exe --config "D:\mongodb\bin\mongod.cfg" --install --serviceName "MongoDB"net start MongoDB
- 若已经存在,可以先卸载,再重新注册即可。
mongod.exe --remove --serviceName "MongoDB"
- 完成上述操作后,如我自定义了服务名称:mongodb。
二、MongoDB 启用security(密码)认证。(Python)
个人本地开发(非生产环境),建议无需配置密码。
因为 MongoDB 配置文件中默认不对外暴露、其次省去每次连接输入密码。
数据库需要对外网开放、存储敏感数据等情况时,建议配置密码。
本机访问 MongoDB 简易配置密码操作如下。注意需提前安装对应 python 操作MongoDB 驱动包。
pip install pymongo
- 默认连接本地 MongoDB 是无需密码即可连接,因为默认不开启密码认证。
from pymongo import MongoClienttry:client = MongoClient("mongodb://localhost:27017/") #默认无密码连接dbs = client.list_database_names() #读取 MongoDB 中的所有数据库print(dbs) #['admin', 'config', 'local'] except Exception as e:print(str(e))
- 启用认证。
- 修改配置文件。取消注释 security ,并使用 authorization: enabled 开启认证。
- 停止正在运行的 MongoDB 服务,重新启动 MongoDB 服务,确保配置文件修改生效。
- 在 python 文件中写代码创建管理员、设置密码并赋予权限。
from pymongo import MongoClienttry:client = MongoClient("mongodb://localhost:27017/")admin_db = client["admin"] #admin数据库中创建管理员#创建管理员用户admin_db.command("createUser","root", #userpwd="test123123", #passwordroles=["root"] #最高权限)print("管理员用户已创建")except Exception as e:print(str(e))
- 生效后。再执行之前的无密码连接就会提示验证失败:Command listDatabases requires authentication, full error: {'ok': 0.0, 'errmsg': 'Command listDatabases requires authentication', 'code': 13, 'codeName': 'Unauthorized'} 。
- 只需创建 MongoDB 连接时带上用户名与密码即可。
from pymongo import MongoClienttry:client = MongoClient("mongodb://root:test123123@localhost:27017/") #启用security认证dbs = client.list_database_names() #读取 MongoDB 中的所有数据库print(dbs) #['admin', 'config', 'local']admin_db = client["admin"] #选择admin数据库users_collection = admin_db["system.users"] #获取系统用户集合root_user = users_collection.find_one({"user": "root"}) #获取root用户信息,返回单个文档print(root_user) except Exception as e:print(str(e))




