zoukankan      html  css  js  c++  java
  • php无法连接mongodb 3.0问题解决

    1 几个常用的role

    • root mongodb最高权限
    • userAdmin 自己建立的数据库账号管理权限
    • read 只读权限
    • readWrite 可读可写

    2 遭遇的梗

    为数据库建立了账号,php死活连不上,使用mongo能连接上,php就是连不上

    3 正确的姿势

    为了安全,我们常常给web应用赋予数据库最低的权限,保证数据库安全。能只用到读的绝对不加上写

    首先建立一个root role的账号

    配置mongodb no auth启动之后

    use admin
    
    db.createUser({
       user:'root',
       pwd:'root',
       roles:[
          {role:'root',db:'admin'}
       ]})
    

    为我们新建的数据库(test)建立一个userAdmin

    use test
    db.createUser({
       user:'001say',
       pwd:'001say',
       roles:[
          {role:'userAdmin',db:'test'}
       ]})
    
    

    建立数据库连接账号

    use test
    db.auth('001say','001say')
    db.createUser({
       user:'say001',
       pwd:'say001',
       roles:[
          {role:'read',db:'test'}
       ]})
    

    这样你就获得了一个只读权限的say001账号

    使用MongoClient连接的时候,可能需要以下格式

    $mongo = new MongoClient("mongodb://name:password@192.168.199.140:27017/test");
    

    需要直接在连接中指定数据库,否则MongoClient会默认去连接admin数据库。你的权限不够,当然会导致连接失败

    4 后续

    第二步是不可缺少的,如果你直接用root权限新建的账号,是不可以连接到test这个数据库的
    mongodb提供了很细腻的权限管理,最小权限到对集合的操作。
    如果还是连不上,可能需要一个最新的驱动。pecl

    如果有遇到类似问题的,希望能帮到你~~
    文章纯手打,如有错误,请联系我修改~~谢谢

  • 相关阅读:
    一年三百六十日,需求业务严相逼
    新博客测试
    教务流水账
    暗流涌动的话“用户体验”
    文档那些事儿
    jforum(2)中文乱码的解决方式
    jmeter笔记(4)测试上传附件
    jmeter笔记(2)组件介绍
    jmeter笔记(5)参数化CSV Data Set Config
    jmeter笔记(6)参数化函数助手
  • 原文地址:https://www.cnblogs.com/001say/p/4533118.html
Copyright © 2011-2022 走看看