我正在尝试使用 Apache Nifi 加载推文并将其存储在 memsql 数据库中。加载和处理推文效果很好,但是当我谈到插入到 memsql 的步骤时,更准确地说,当流程到达 ConvertJSONToSql 处理器时,它会抛出错误。
这是我对 JDBC 连接池的设置:
Memsql 运行在 Docker 上,我像这样初始化了它的集群:
docker run -i --init `
--name memsql-ciab `
-e LICENSE_KEY=$env:LICENSE_KEY `
-p 3308:3306 -p 8090:8080 `
memsql/cluster-in-a-box
端口 3306 和 8080 已被占用。我还确保 myuser 拥有托管“localhost”和“127.0.0.1”的所有权限,如授权中所示。
当我使用 Windows Powershell 或 localhost:8090 连接时,两种登录方式都适用于“myuser”,密码为“pass”。此外,两个登录名都具有数据库“twitterDB”的权限。我发现奇怪的是,在我的 Docker 集群中,我有数据库 memsql,其中有表 users,但我只能运行:
describe memsql.users;
其他一切都会引发错误“错误 1706 (HY000):MemSQL 不支持功能“表名称与同名元数据表冲突”。”。另外,在 Nifi 的 JDBC 连接池中,如果我将用户和密码留空,ConvertJSONToSql 会抛出不同的错误,表示“@”localhost”用户没有数据库“twitterDB”的权限。*。
我已经为这个问题苦苦挣扎了一段时间,我不知道还能尝试什么,所以任何帮助都会很棒。
最佳答案
让我们将身份验证失败和插入失败的问题分开。尝试更改 Apache Nifi 以使用用户 root
(无密码)并查看插入是否成功。还可以尝试使用 MemSQL Studio(设置中的localhost:8090
)或 powershell 中的 sql 命令插入数据。每次登录时尝试此操作:root
(无密码)并以 myuser
身份登录。这些测试应该可以帮助我们了解更多信息。
您没有指定 Docker 设置,因此假设使用 Docker Desktop 或其他本地 Docker,请尝试将 CPU 增加到 4 个,将 RAM 增加到 4 或 8 GB。我发现开发人员的默认值通常小于盒中集群
的默认值。
关于mysql - 用户 'user' @'localhost' 的访问被拒绝(使用密码 : YES) in Apache Nifi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59815566/