MongoServerError求助:用户无权限对genius-car.service执行find操作
解决MongoDB Atlas权限错误:user is not allowed to do action [find] on [genius-car.service]
错误信息
D:\Projects_WebDev\BackEnd\server-genius-car-service\node_modules\mongodb\lib\cmap\connection.js:207 callback(new error_1.MongoServerError(document)); ^ MongoServerError: user is not allowed to do action [find] on [genius-car.service] at Connection.onMessage (D:\Projects_WebDev\BackEnd\server-genius-car-service\node_modules\mongodb\lib\cmap\connection.js:207:30) at MessageStream.<anonymous> (D:\Projects_WebDev\BackEnd\server-genius-car-service\node_modules\mongodb\lib\cmap\connection.js:60:60) at MessageStream.emit (node:events:527:28) at processIncomingData (D:\Projects_WebDev\BackEnd\server-genius-car-service\node_modules\mongodb\lib\cmap\message_stream.js:132:20) at MessageStream._write (D:\Projects_WebDev\BackEnd\server-genius-car-service\node_modules\mongodb\lib\cmap\message_stream.js:33:9) at writeOrBuffer (node:internal/streams/writable:389:12) at _write (node:internal/streams/writable:330:10) at MessageStream.Writable.write (node:internal/streams/writable:334:10) at TLSSocket.ondata (node:internal/streams/readable:754:22) at TLSSocket.emit (node:events:527:28) { ok: 0, code: 8000, codeName: 'AtlasError', [Symbol(errorLabels)]: Set(0) {} } [nodemon] app crashed - waiting for file changes before starting...
相关代码
async function run() { try { await client.connect(); const serviceCollection = client.db('genius-car').collection('service'); app.get('/service', async (req, res) => { const query = {}; const cursor = serviceCollection.find(query); const services = await cursor.toArray(); res.send(services) }); } finally { // } } run().catch(console.dir);
解决方案
这个错误是因为你使用的MongoDB Atlas用户账号没有对genius-car数据库下service集合执行find操作的权限,按以下步骤修复:
- 登录MongoDB Atlas控制台,进入你的项目。
- 点击左侧菜单栏的「Database Access」选项。
- 在用户列表中找到你当前连接数据库使用的账号,点击账号右侧的「Edit」按钮。
- 在「Database User Privileges」区域,添加对应权限:
- 若需要对该数据库全量读写权限,直接勾选「Read and write to any database」(建议仅给指定数据库权限,更安全)。
- 若要最小权限控制,点击「Add Specific Privilege」,在弹出的选项中选择
find权限,指定数据库为genius-car,集合为service,确认添加。
- 保存修改,等待1-2分钟让权限生效。
- 重启你的Express服务器,重新访问
http://localhost:5000/service即可。
注意事项
- 确保你的数据库连接字符串中的用户名、密码和Atlas控制台中设置的账号完全一致。
- 遵循最小权限原则,不要给用户超出业务需求的权限,避免安全风险。
内容的提问来源于stack exchange,提问作者Monzur Alam
相关产品推荐
相关产品推荐

