Golang 使用 MongoDB 报错
在使用 MongoDB 时,URI格式一般为:
连接URI
mongodb://用户名:密码@127.0.0.1:27017
// 等同于
mongodb://用户名:密码@127.0.0.1:27017/admin
如果不指定数据库名,默认使用 admin 进行授权验证,当你指定了一个数据库名称,比如:
mongodb://用户名:密码@127.0.0.1:27017/user
测试 admin 数据库中的 system.users
信息中 user 数据库又没有用户的话,当你在对数据库进行 CRUD 时就会出现 auth error
// 信息已使用驱动库为准,大概就是授权错误
auth error: sasl conversation error: unable to authenticate using mechanism "SCRAM-SHA-1": (AuthenticationFailed) Authentication failed.
为了解决这问题,我们需要为 user 添加一个用户 比如zs
use user // 这个就是 uri 中的数据库
db.createUser({"user":"zs","pwd":"zs123!","roles":[{"role":"userAdminAnyDatabase","db":"admin"}]})
这里需要注意下 role 和 db 的值。
use user
db.createUser({"user":"zs","pwd":"zs123!","roles":[{"role":"readWrite","db":"log"}]})
这个只能保证你能够链接数据库,zs 也只是对 log
这个数据库有可读可写的权限,如果此时你要对读取另一个 group
数据库中的数据,那么又会出现授权错误
err: (Unauthorized) not authorized on center to execute command
你可以这样:
use user
db.createUser({"user":"zs","pwd":"zs123!","roles":[{"role":"readWrite","db":"log"}, {"role":"readWrite","db":"group"}]})
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏