如何重现我的问题
创建 MonetDB 容器
我有这个设置(使用 Windows 和 Docker Desktop)。
创建the official monetdb docker container使用以下命令:
docker run -v $HOME/Desktop/monetdbtest:/monetdbtest -e 'MONET_DATABASE=docker' -e 'MONETDB_PASSWORD=docker' -p 50000:50000 -d topaztechnology/monetdb:latest
解释该命令的作用:
创建一个包含名为“docker”的数据库的 monetdb 容器,并将密码“docker”应用于名为“monetdb”的默认用户。它还挂载了我的目录 monetdbtest/
放入容器中。
使用 DBeaver 测试容器
我使用 DBeaver 使用以下凭据测试连接:
JDBC URL: jdbc:monetdb://localhost:50000/docker
host: localhost
port: 50000
Database/schema: docker
username: monetdb
password: docker
这工作正常,我能够连接并可以使用 dbeaver 执行 sql 查询。
在容器内使用mclient发送查询
我使用以下命令以 root 身份进入容器:
docker exec -u root -t -i nostalgic_hodgkin /bin/bash
(将 nostalgic_hodgkin 替换为您随机生成的容器名称)
2. 我导航到我的安装目录
cd monetdbtest
然后我测试与 mclient 的连接:
mclient -h localhost -p 50000 -d docker
系统要求我输入用户名和密码,因此对于用户,我输入
monetdb
对于密码,我输入 docker
。它可以工作,我在 mclient shell 中,能够执行 SQL 查询。
3.
由于我不想总是输入用户名和密码,因此我创建了 .monetdb
文件在 monetdbtest/
目录。它看起来像这样:
user=monetdb
password=docker
- 现在我应该能够使用 mclient 命令而无需输入用户信息。所以我输入这个命令:
mclient -h localhost -p 50000 -d docker
但是我收到消息:
'nvalidCredentialsException:checkCredentials:invalid credentials for user 'monetdb
我按照 mclient manual 做了一切。也许我错过了什么?
最佳答案
您可能需要导出值为 /monetdbtest/.monetdb
的环境变量 DOTMONETDBFILE
。请参阅 mclient 的手册页,尤其是 OPTIONS 标题之前的段落。
关于docker - 使用官方 docker 镜像和 .monetdb 文件时,用户 'monetdb' 的凭据无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70907086/