Support Questions

Find answers, ask questions, and share your expertise

CaptureChangeMySql processor error "Could not connect binlog client to any of the specified hosts due to: Client does not support authentication protocol"

avatar
Contributor

Hi,

 

I want to connect connect two different MySQL database services(mysql 5.7 and Mysql 8.0 ). I am using two  two CaptureChangeMySQL Processors for this. 

Mysql 5.7 is install in my local machine and CaptureChangeMySQL Processors connecting successfully. 

 Mysql 8.0 is install on docker container and on host machine port 3310 like (sudo docker run --name mysql-8.0-container -p 127.0.0.1:3310:3306 -e MYSQL_ROOT_PASSWORD=password -d mysql:8.0). 

CaptureChangeMySQL connecting with mysql 8.0 is giving  error.

 

Can any suggest why i am getting this error and how to resolve it.

Note: I am able to connect mysql 8.0 using mysql workbench.CaptureChangeMySql-8.0-configuration.pngTwo_MySql_Server_Connection_NiFi_Diagram.pngScreenshot from 2022-08-03 16-44-47.png 

 

Error:

2022-08-03 15:59:58,863 ERROR [Timer-Driven Process Thread-4] o.a.n.c.m.processors.CaptureChangeMySQL CaptureChangeMySQL[id=352daba9-0182-1000-a02a-faf160ab1329] Processing failed
org.apache.nifi.processor.exception.ProcessException: Could not connect binlog client to any of the specified hosts due to: Client does not support authentication protocol requested by server; consider upgrading MySQL client
at org.apache.nifi.cdc.mysql.processors.CaptureChangeMySQL.setup(CaptureChangeMySQL.java:664)
at org.apache.nifi.cdc.mysql.processors.CaptureChangeMySQL.onTrigger(CaptureChangeMySQL.java:678)
at org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1283)
at org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:214)
at org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:103)
at org.apache.nifi.engine.FlowEngine$2.run(FlowEngine.java:110)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) 
 

 

Thanks,

 

 

1 ACCEPTED SOLUTION

avatar
Super Guru

@AbhishekSingh ,

 

The CaptureChangeMySQL processor acts as a MySQL replication slave. It requires the REPLICATION_SLAVE privilege in MySQL.

 

Following the steps in the documentation and create a separate user to use in your processor.

 

Cheers,

André

 

 

Cheers,

André

--
Was your question answered? Please take some time to click on "Accept as Solution" below this post.
If you find a reply useful, say thanks by clicking on the thumbs up button.

View solution in original post

1 REPLY 1

avatar
Super Guru

@AbhishekSingh ,

 

The CaptureChangeMySQL processor acts as a MySQL replication slave. It requires the REPLICATION_SLAVE privilege in MySQL.

 

Following the steps in the documentation and create a separate user to use in your processor.

 

Cheers,

André

 

 

Cheers,

André

--
Was your question answered? Please take some time to click on "Accept as Solution" below this post.
If you find a reply useful, say thanks by clicking on the thumbs up button.