【问题标题】:Access Denied for user in MySql while connection through sqoop通过 sqoop 连接时,MySql 中的用户访问被拒绝
【发布时间】:2020-03-05 19:00:49
【问题描述】:

出于自学目的,我正在尝试在 Google 云中创建端到端数据流:

1.使用云sql创建mysql表 2.使用dataproc创建一个临时集群,使用模板运行sqoop作业。 3.从存储桶中将提取的数据放入BQ中。

我在通过 sqoop 访问 mysql 表时卡住了。

ERROR manager.SqlManager: Error executing statement: java.sql.SQLException: Access denied for user 'test'@'localhost' (using password: YES)
java.sql.SQLException: Access denied for user 'test'@'localhost' (using password: YES).

我尝试通过以下方式解决此问题: 1.用公网IP替换本地主机。 2.执行

GRANT ALL ON everlytics.* TO test@'<ip>' IDENTIFIED BY '1234';  
flush privileges;

我的代码 sn-p 如下:

gcloud  dataproc workflow-templates set-managed-cluster $template_name --zone "asia-south1-a" \
 --cluster-name=$cluster_name \
 --region "asia-south1" \
 --scopes=default,sql-admin \
 --initialization-actions=gs://dataproc-initialization-actions/cloud-sql-proxy/cloud-sql-proxy.sh \
 --properties=hive:hive.metastore.warehouse.dir=$bucket/hive-warehouse \
 --metadata=enable-cloud-sql-hive-metastore=false \
 --metadata=additional-cloud-sql-instances=$instance_name=tcp:3306 \
 --master-machine-type n1-standard-1 \
 --master-boot-disk-size 20 \
  --num-workers 2 \
--worker-machine-type n1-standard-2 \
--worker-boot-disk-size 20 \
--image-version 1.2 &&
gcloud  dataproc workflow-templates add-job hadoop \
--step-id=customers_564456778 \
--region="asia-south1" \
--workflow-template=$template_name \
--class=org.apache.sqoop.Sqoop \
--jars=$bucket/sqoop-1.4.7-hadoop260.jar,$bucket/avro-tools-1.8.2.jar,$bucket/mysql-connector-java-5.1.48.jar  \
-- import -Dmapreduce.job.user.classpath.first=true \
--driver com.mysql.jdbc.Driver \
--username=test \
--password=1234 \
--query "select * from everlytics.customers where customerNumber>0 and \$CONDITIONS" \
--target-dir $bucket/$table_name \
--split-by customerNumber -m 2 

Mysql 5.6 版

如果我做得正确,请告知。

【问题讨论】:

    标签: mysql google-cloud-sql sqoop cloud-sql-proxy


    【解决方案1】:

    可能是配置问题...

    通过在 Cloud SQL 中运行以下命令进行验证 1)gcloud sql connect [cloud-sql-instnace-name] --user=root

    并确保以下 2)确保您在Cloud SQL Instance的连接列表中添加了您的机器IP地址。

    【讨论】:

    • 嗨 Varun,感谢您的回答。但它没有解决,我仍然遇到问题。我正在使用 Cloud-SQL,集群是临时创建的。一旦工作完成,集群被删除,连接中没有添加ip的概念
    • 我假设您能够通过 Cloud shell 进行连接,并且您仅面临来自 Dataproc 的问题。您能否在创建集群时确认 --scopes 'googleapis.com/auth/cloud-platform' 参数(如果您使用浏览器窗口:在项目访问下 --> 允许 API 访问同一项目中的所有 Google Cloud 服务。)
    猜你喜欢
    • 1970-01-01
    • 2018-02-05
    • 2022-11-19
    • 1970-01-01
    • 2019-07-05
    • 2019-03-04
    • 1970-01-01
    • 2017-07-19
    • 2019-01-24
    相关资源
    最近更新 更多