Mysql 通过Dataproc群集连接到CloudSQL实例时出现“拒绝访问”错误,即使凭据正确

Mysql 通过Dataproc群集连接到CloudSQL实例时出现“拒绝访问”错误,即使凭据正确,mysql,authentication,google-cloud-platform,google-cloud-sql,google-cloud-dataproc,Mysql,Authentication,Google Cloud Platform,Google Cloud Sql,Google Cloud Dataproc,我试图在MySQL实例上通过dataproc集群运行一个简单的查询。一切都在谷歌云上 gcloud dataproc作业提交hadoop\ -cluster=$cluster\u name\ -地区=美国中部1\ -class=org.apache.sqoop.sqoop\ -jars=$bucket/sqoop\u jars/sqoop\u sqoop-1.4.7.jar,$bucket/sqoop\u jars/sqoop\u avro-tools-1.8.2.jar,file:///usr

我试图在MySQL实例上通过dataproc集群运行一个简单的查询。一切都在谷歌云上

gcloud dataproc作业提交hadoop\ -cluster=$cluster\u name\ -地区=美国中部1\ -class=org.apache.sqoop.sqoop\ -jars=$bucket/sqoop\u jars/sqoop\u sqoop-1.4.7.jar,$bucket/sqoop\u jars/sqoop\u avro-tools-1.8.2.jar,file:///usr/share/java/mysql-connector-java-5.1.49.jar \ - \ 评估\ -Dmapreduce.job.user.classpath.first=true\ -驱动程序com.mysql.jdbc.driver\ -connect=jdbc:mysql://localhost:3306/airports \ -用户名=根\ -密码文件=$pwd_文件\ -查询从航班限制10中选择计数* 但是,当我运行它时,返回以下错误:

WARN tool.EvalSqlTool:SQL异常执行语句:java.SQL.SQLException:user'root'@'localhost'使用密码拒绝访问:是

我想这意味着我的证件是错的。但是,当我尝试使用此命令直接登录实例时:

gcloud sql connect'实例\名称'-user=root
我登录时没有任何问题。在这一点上,网络层不会有任何问题。我还尝试创建不同的用户和测试密码,但没有任何效果。请帮忙。这让我抓狂。

要从Datproc群集连接到CloudSQL实例,您应该使用CloudSQL代理:

我看到您已使用-password文件为密码指定了一个文件。您是否还需要将此文件提供给作业?

谢谢,但我在创建群集时已经有了此文件。我假设如果我没有它,它根本就不会连接,而不是给我一个拒绝访问的错误。我还没能测试出来。我不认为这是必要的,但即使我只是使用-password=我也无法登录,因此我认为还有其他问题。您可以尝试的另一件事是确保root将localhost作为授权主机-创建用户“root”@“localhost”,由“appPassword”标识;虽然应该考虑使用不同的用户而不是root用户。