代码之家  ›  专栏  ›  技术社区  ›  Matthieu Brucher

通过js initdb脚本初始化新用户

  •  0
  • Matthieu Brucher  · 技术社区  · 5 年前

    我用一个附加的js脚本创建了一个mongo docker容器:

    ADD graylog.js /docker-entrypoint-initdb.d/graylog.js
    

    脚本创建两个用户:

    root = db.getSiblingDB('root');
    root.createUser(
      {
        user: "root",
        pwd: "pass",
        roles: [
          { role: "dbOwner", db: "admin" }
        ]
      }
    );
    
    graylog = db.getSiblingDB('graylog');
    graylog.createUser(
      {
        user: "graylog",
        pwd: "vWGzncmBe9",
        roles: [
          { role: "dbOwner", db: "graylog" }
        ]
      }
    );
    

    不幸的是,即使只有一个用户(第一个用户),连接数据库并列出可用的数据库也不起作用:

    client = MongoClient('mongodb://root:pass@localhost:27017/')
    client.list_database_names()
    

    身份验证失败

    实际上,在mongo服务器日志中,我看到了 root 无法登录。 graylog 也不需要 灰阶 服务器。

    我用一个全新的/干净的音量做了这个,我可以确认这个设置 MONGO_INITDB_ROOT_USERNAME / MONGO_INITDB_ROOT_PASSWORD 允许列出数据库。

    关于如何做到这一点的文件并不十分清楚。mongoldb 3可以允许bth环境变量和脚本,但是现在,只有其中一个可以工作,并且只有在mongo未初始化的情况下。

    那么如何从这个脚本设置用户呢?

    编辑:

    添加mongo启动日志:

    2019-03-13T20:01:03.891+0000 I SHARDING [initandlisten] Marking collection local.system.replset as collection version: <unsharded>
    2019-03-13T20:01:03.892+0000 I SHARDING [initandlisten] Marking collection admin.system.roles as collection version: <unsharded>
    2019-03-13T20:01:03.892+0000 I SHARDING [initandlisten] Marking collection admin.system.version as collection version: <unsharded>
    2019-03-13T20:01:03.893+0000 I SHARDING [initandlisten] Marking collection local.startup_log as collection version: <unsharded>
    2019-03-13T20:01:03.893+0000 I FTDC     [initandlisten] Initializing full-time diagnostic data capture with directory '/data/db/diagnostic.data'
    2019-03-13T20:01:03.894+0000 I SHARDING [initandlisten] Marking collection admin.system.users as collection version: <unsharded>
    2019-03-13T20:01:03.894+0000 I SHARDING [initandlisten] Marking collection config.system.sessions as collection version: <unsharded>
    

    没有其他用户的迹象:(我想知道我是否应该做这些手动之后!

    0 回复  |  直到 5 年前
    推荐文章