日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

[Flink] Flink(CDC/SQL)Job在启动时,报“ConnectException: Error reading MySQL variables: Access denied for user 'xxxx '@'xxxx' (using password: YES)”(1个空格引发的"乌龙")

發布時間:2023/11/23 数据库 37 coder

1 問題描述

1.1 基本信息

所屬環境:CN-PT
問題時間:2023-11-21
所屬程序: Flink Job(XXXPT_dimDeviceLogEventRi)

  • 作業類型: Flink SQL Job
  • 數據流 : 業務MySQL ==> Flink Job( Flink Cdc Connector(mysql) + Flink SQL) ==> Bigdata Kafka ==> Bigdata OLAP ==> 業務系統
  • 作業備注: 關鍵技術---- 利用 Flink Cdc Connector(mysql) 監聽業務庫表進行實時數據同步業務維度數據至kafka

1.2 問題日志

Flink Job(XXXPT_dimDeviceLogEventRi) 運行過程中,出現錯誤:

…
2023-11-21 15:25:28,263 INFO  org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer [] - Starting FlinkKafkaInternalProducer (1/1) to produce into default topic dim_device_log_event_ri
2023-11-21 15:25:28,266 INFO  org.apache.flink.runtime.io.network.partition.consumer.SingleInputGate [] - Converting recovered input channels (1 channels)
2023-11-21 15:25:28,325 INFO  io.debezium.connector.common.BaseSourceTask                  [] - Stopping down connector
2023-11-21 15:25:28,325 INFO  io.debezium.connector.mysql.MySqlConnectorTask               [] - Stopping MySQL connector task
2023-11-21 15:25:28,326 ERROR com.alibaba.ververica.cdc.debezium.DebeziumSourceFunction    [] - Reporting error:
org.apache.kafka.connect.errors.ConnectException: Error reading MySQL variables: Access denied for user 'root '@'123.45.67.89' (using password: YES)
	at io.debezium.connector.mysql.MySqlJdbcContext.querySystemVariables(MySqlJdbcContext.java:342) ~[blob_p-b4fb1883b8b45408debf574a19853181362f64e4-1be92b6c42d0969e1e10ed136b1c5fc9:?]
	at io.debezium.connector.mysql.MySqlJdbcContext.readMySqlSystemVariables(MySqlJdbcContext.java:321) ~[blob_p-b4fb1883b8b45408debf574a19853181362f64e4-1be92b6c42d0969e1e10ed136b1c5fc9:?]
	at io.debezium.connector.mysql.MySqlTaskContext.<init>(MySqlTaskContext.java:79) ~[blob_p-b4fb1883b8b45408debf574a19853181362f64e4-1be92b6c42d0969e1e10ed136b1c5fc9:?]
	at io.debezium.connector.mysql.MySqlTaskContext.<init>(MySqlTaskContext.java:52) ~[blob_p-b4fb1883b8b45408debf574a19853181362f64e4-1be92b6c42d0969e1e10ed136b1c5fc9:?]
	at io.debezium.connector.mysql.MySqlConnectorTask.createAndStartTaskContext(MySqlConnectorTask.java:350) ~[blob_p-b4fb1883b8b45408debf574a19853181362f64e4-1be92b6c42d0969e1e10ed136b1c5fc9:?]
	at io.debezium.connector.mysql.MySqlConnectorTask.start(MySqlConnectorTask.java:143) ~[blob_p-b4fb1883b8b45408debf574a19853181362f64e4-1be92b6c42d0969e1e10ed136b1c5fc9:?]
	at io.debezium.connector.common.BaseSourceTask.start(BaseSourceTask.java:106) ~[blob_p-b4fb1883b8b45408debf574a19853181362f64e4-1be92b6c42d0969e1e10ed136b1c5fc9:?]
	at io.debezium.embedded.EmbeddedEngine.run(EmbeddedEngine.java:758) [blob_p-b4fb1883b8b45408debf574a19853181362f64e4-1be92b6c42d0969e1e10ed136b1c5fc9:?]
	at io.debezium.embedded.ConvertingEngineBuilder$2.run(ConvertingEngineBuilder.java:171) [blob_p-b4fb1883b8b45408debf574a19853181362f64e4-1be92b6c42d0969e1e10ed136b1c5fc9:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_362]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_362]
	at java.lang.Thread.run(Thread.java:750) [?:1.8.0_362]
Caused by: java.sql.SQLException: Access denied for user 'root '@'123.45.67.89' (using password: YES)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) ~[blob_p-
...

2 問題分析

這是1個 Flink SQL Job:

其僅使用了8(5+3)個外部變量(放在NACOS配置文件中的):

經檢查,無誤。

那么,咱們來看看啟動參數是否有錯誤:

2.2 作業啟動參數

啟動參數(nacos地址等)均無誤。

再看看NACOS的配置:

果然有問題!

2.3 再細究日志

再仔細看看日志:赫然發現了這個空格!

2.X 問題結論

  1. 本次問題出在 MYSQL數據庫用戶名中含【空格】;
  2. 針對Flink CDC錯誤"ConnectException: Error reading MySQL variables: Access denied for user 'root '@'123.45.67.89' (using password: YES)"共有如下情況,做以小結:
| 結論1	| 
數據庫鏈接(HOST/PORT/USER/PASSWORD)【配置錯誤】,包括可能意想不到的【空格】;

| 結論2	|
當出現 Access denied for user 'xx'@'xxxx' (using password: YES),只且僅有2類原因:
	1)數據庫【用戶不存在】、或【密碼錯誤】;
	    注:用戶不存在,自然也包括了上面說的配置錯誤(比如空格)的情況;
	2)【無操作權限】;
	    注1:通過 show grants for {user}@'{host}' 查看用戶的權限授予情況;
	    注2:在使用 grant 授權用戶后,應使用 flush privileges 刷新權限;否則,有最新權限尚未生效的小概率事件發生。

3 解決方法

  • 本問題:去除 root 用戶后面的空格符!
  • 本錯誤的全部情況,參見:2.X 章節 問題結論

X 推薦與參考文獻

[1] Custom Payload in Debezium - copyprogramming.com 【推薦】
[2] Multiple debezium connector for same MySql database not working - stackoom
[3] 大數據-業務數據采集-FlinkCDC DebeziumSourceFunction via the 'serverTimezone' configuration property - 51CTO
[4] 報錯:Access denied for user 'xxx'@'localhost' - segementfault
[5] [數據庫] MYSQL之授予/查驗binlog權限 - 博客園/千千寰宇 【推薦】
[6] 一文看盡MySQL用戶權限管理,真香 - Zhihu 【推薦】

總結

以上是生活随笔為你收集整理的[Flink] Flink(CDC/SQL)Job在启动时,报“ConnectException: Error reading MySQL variables: Access denied for user 'xxxx '@'xxxx' (using password: YES)”(1个空格引发的"乌龙")的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。