Sql 如何将Presto连接到Mongodb容器

Sql 如何将Presto连接到Mongodb容器,sql,mongodb,containers,presto,Sql,Mongodb,Containers,Presto,问题:无法将presto容器连接到mongodb容器。 我有三个正在运行的容器: [root@localhost tmp]# docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8f6686547c55 mongo

问题:无法将presto容器连接到mongodb容器。

我有三个正在运行的容器:

    [root@localhost tmp]# docker container ls
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                      NAMES
8f6686547c55        mongo               "docker-entrypoint.s…"   6 minutes ago       Up 6 minutes        0.0.0.0:27017->27017/tcp   tmp_mongo_1
0b639ef12c12        mongo-express       "tini -- /docker-ent…"   6 minutes ago       Up 6 minutes        0.0.0.0:8081->8081/tcp     tmp_mongo-express_1
c51178e29a3e        prestosql/presto    "/usr/lib/presto/bin…"   4 days ago          Up About an hour    0.0.0.0:8080->8080/tcp     presto
presto容器可以访问mongo db(网络方面):

还配置了Presto属性(/usr/lib/Presto/default/etc/catalog/mongodb.properties):

“liran”集合存在:

尝试访问mongo的“liran”收藏时:

    presto> SELECT COUNT(*) FROM mongodb.local.liran;
Query 20191216_154753_00000_sz73z failed: com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting to connect. Client view of cluster state is {type=UNKNOWN, servers=[{address=mongo:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSecurityException: Exception authenticating MongoCredential{mechanism=null, userName='root', source='liran', password=<hidden>, mechanismProperties={}}}, caused by {com.mongodb.MongoCommandException: Command failed with error 18: 'Authentication failed.' on server mongo:27017. The full response is { "ok" : 0.0, "errmsg" : "Authentication failed.", "code" : 18, "codeName" : "AuthenticationFailed" }}}]
更改mongodb.credentials=根目录:example@local只是用local而不是liran给出了相同的错误

最后一件事,当我运行mongo容器时,我使用了以下stack.yml:

    [root@localhost tmp]# cat stack.yml 

# Use root/example as user/password credentials
version: '3.1'

services:

  mongo:
    image: mongo
    restart: always
    ports:
      - 27017:27017
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example
      net.tls.mode: disabled

  mongo-express:
    image: mongo-express
    restart: always
    ports:
      - 8081:8081
    environment:
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: example
正在使用的码头工人: ,

我们需要将“身份验证数据库”放在@之后,如下所示。docker映像中的默认名称为“admin”


有两个问题:

  • mongo容器在我运行时设置了对admin db的访问权限 正在尝试访问本地数据库。 如mongo的docker hub所示:

    MONGO_INITDB_ROOT_用户名,MONGO_INITDB_ROOT_密码 这些变量结合使用,创建一个新用户并设置 用户密码。此用户是在管理身份验证中创建的 数据库并指定root角色,这是一个“超级用户”角色

  • Presto配置文件 (/usr/lib/presto/default/etc/catalog/mongodb.properties)设置为 在mongo的容器不可用时使用TLS。 更改属性mongodb.ssl.enabled=false mongo容器中的错误提供了线索:

    mongo|u 1 | 2019-12-19T12:51:45.607+0000 I网络[conn2254]接收来自客户端的请求时出错:SSLhandshake失败:已接收SSL握手,但服务器在不支持SSL的情况下启动。从172.21.0.4:47702结束连接(连接id:2254)

  • 最后
    presto>从mongodb.admin.liran中选择COUNT(*)

    _可乐 29353 (1排)

    查询20191219_125214_00000_6983x,已完成,1个节点 拆分:共18项,完成18项(100.00%)
    0:02[29.4K行,681B][17.8K行/秒,411B/s]

    谢谢。现在“liran”集合在admin db下,但我得到了这个错误:presto>SELECT COUNT(*)FROM mongodb.admin.liran;查询20191218_155830_00007_us7wh失败:com.mongodb.MongoTimeoutException:等待连接时在30000毫秒后超时。群集状态的客户端视图为{type=UNKNOWN,servers=[{address=25a1ed6ef906:27017,type=UNKNOWN,state=CONNECTING,exception={com.mongodb.MongoSocketWriteException:exception sending message},由{javax.net.ssl.SSLHandshakeException:remotehost终止握手}引起,由{java.io.eofeexception:ssl peer关闭不正确}引起]与mongo相同,容器名称为:presto>SELECT COUNT(),来自mongodb.admin.liran;查询20191218_161403_00003_fh2vp失败:com.mongodb.MongoTimeoutException:等待连接时在30000毫秒后超时。群集状态的客户端视图为{type=UNKNOWN,服务器=[{address=**mongo**:27017,type=UNKNOWN,state=CONNECTING,exception={com.mongodb.MongoSocketWriteException:exception sending message},由{javax.net.ssl.SSLHandshakeException:Remote host终止握手}引起,由{java.io.eofeexception:ssl peer shutdown错误关闭}引起]你能确认Presto和MongoDB之间的网络连接吗?另外,我想邀请你加入我们的社区Slack(),这样我们就可以进行交互对话了。当然。两种方法都有效。1)[root@c51178e29a3e/]#ping-一个mongo ping mongo(172.21.0.3)56(84)字节的数据。docker_mongo_1.docker_默认值(172.21.0.3)中的64字节:icmp_seq=1 ttl=64时间=0.125毫秒2)[root@c51178e29a3e/]#ping-a 25a1ed6ef906 ping 25a1ed6ef906(172.21.0.3)56(84)字节数据。来自docker_mongo_1.docker_默认值(172.21.0.3)的64字节:icmp_seq=1 ttl=64 time=0.125毫秒相同docker网络下的两个容器(“名称”:“docker_默认值”)。这看起来更像是TLS问题。我将加入Slack。
        presto> SELECT COUNT(*) FROM mongodb.local.liran;
    Query 20191216_154753_00000_sz73z failed: com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting to connect. Client view of cluster state is {type=UNKNOWN, servers=[{address=mongo:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSecurityException: Exception authenticating MongoCredential{mechanism=null, userName='root', source='liran', password=<hidden>, mechanismProperties={}}}, caused by {com.mongodb.MongoCommandException: Command failed with error 18: 'Authentication failed.' on server mongo:27017. The full response is { "ok" : 0.0, "errmsg" : "Authentication failed.", "code" : 18, "codeName" : "AuthenticationFailed" }}}]
    
        mongo_1          | 2019-12-16T15:51:00.795+0000 I  NETWORK  [conn322] end connection 172.20.0.4:34810 (4 connections now open)
    mongo_1          | 2019-12-16T15:51:10.796+0000 I  NETWORK  [listener] connection accepted from 172.20.0.4:34812 #323 (5 connections now open)
    mongo_1          | 2019-12-16T15:51:10.796+0000 I  NETWORK  [conn323] received client metadata from 172.20.0.4:34812 conn323: { driver: { name: "mongo-java-driver", version: "3.6.0" }, os: { type: "Linux", name: "Linux", architecture: "amd64", version: "3.10.0-862.11.6.el7.x86_64" }, platform: "Java/Oracle Corporation/11.0.4+11-LTS" }
    mongo_1          | 2019-12-16T15:51:10.798+0000 I  ACCESS   [conn323] SASL SCRAM-SHA-1 authentication failed for root on liran from client 172.20.0.4:34812 ; UserNotFound: Could not find user "root" for db "liran"
    mongo_1          | 2019-12-16T15:51:10.799+0000 I  NETWORK  [conn323] end connection 172.20.0.4:34812 (4 connections now open)
    mongo_1          | 2019-12-16T15:51:20.800+0000 I  NETWORK  [listener] connection accepted from 172.20.0.4:34818 #324 (5 connections now open)
    mongo_1          | 2019-12-16T15:51:20.801+0000 I  NETWORK  [conn324] received client metadata from 172.20.0.4:34818 conn324: { driver: { name: "mongo-java-driver", version: "3.6.0" }, os: { type: "Linux", name: "Linux", architecture: "amd64", version: "3.10.0-862.11.6.el7.x86_64" }, platform: "Java/Oracle Corporation/11.0.4+11-LTS" }
    mongo_1          | 2019-12-16T15:51:20.803+0000 I  ACCESS   [conn324] SASL SCRAM-SHA-1 authentication failed for root on liran from client 172.20.0.4:34818 ; UserNotFound: Could not find user "root" for db "liran"
    mongo_1          | 2019-12-16T15:51:20.804+0000 I  NETWORK  [conn324] end connection 172.20.0.4:34818 (4 connections now open)
    mongo_1          | 2019-12-16T15:51:30.806+0000 I  NETWORK  [listener] connection accepted from 172.20.0.4:34820 #325 (5 connections now open)
    mongo_1          | 2019-12-16T15:51:30.807+0000 I  NETWORK  [conn325] received client metadata from 172.20.0.4:34820 conn325: { driver: { name: "mongo-java-driver", version: "3.6.0" }, os: { type: "Linux", name: "Linux", architecture: "amd64", version: "3.10.0-862.11.6.el7.x86_64" }, platform: "Java/Oracle Corporation/11.0.4+11-LTS" }
    mongo_1          | 2019-12-16T15:51:30.809+0000 I  ACCESS   [conn325] SASL SCRAM-SHA-1 authentication failed for root on liran from client 172.20.0.4:34820 ; UserNotFound: Could not find user "root" for db "liran"
    mongo_1          | 2019-12-16T15:51:30.810+0000 I  NETWORK  [conn325] end connection 172.20.0.4:34820 (4 connections now open)
    mongo_1          | 2019-12-16T15:51:40.811+0000 I  NETWORK  [listener] connection accepted from 172.20.0.4:34822 #326 (5 connections now open)
    mongo_1          | 2019-12-16T15:51:40.812+0000 I  NETWORK  [conn326] received client metadata from 172.20.0.4:34822 conn326: { driver: { name: "mongo-java-driver", version: "3.6.0" }, os: { type: "Linux", name: "Linux", architecture: "amd64", version: "3.10.0-862.11.6.el7.x86_64" }, platform: "Java/Oracle Corporation/11.0.4+11-LTS" }
    mongo_1          | 2019-12-16T15:51:40.814+0000 I  ACCESS   [conn326] SASL SCRAM-SHA-1 authentication failed for root on liran from client 172.20.0.4:34822 ; UserNotFound: Could not find user "root" for db "liran"
    
        [root@localhost tmp]# cat stack.yml 
    
    # Use root/example as user/password credentials
    version: '3.1'
    
    services:
    
      mongo:
        image: mongo
        restart: always
        ports:
          - 27017:27017
        environment:
          MONGO_INITDB_ROOT_USERNAME: root
          MONGO_INITDB_ROOT_PASSWORD: example
          net.tls.mode: disabled
    
      mongo-express:
        image: mongo-express
        restart: always
        ports:
          - 8081:8081
        environment:
          ME_CONFIG_MONGODB_ADMINUSERNAME: root
          ME_CONFIG_MONGODB_ADMINPASSWORD: example
    
    connector.name=mongodb
    mongodb.seeds=mongo:27017
    mongodb.credentials=root:example@admin