Apache kafka Debezium MySQL错误:连接密码为空
我的Debezium连接器具有以下docker-compose.yml配置:Apache kafka Debezium MySQL错误:连接密码为空,apache-kafka,apache-kafka-connect,debezium,Apache Kafka,Apache Kafka Connect,Debezium,我的Debezium连接器具有以下docker-compose.yml配置: version: '3.1' services: db: image: mysql network_mode: host environment: MYSQL_ROOT_PASSWORD: 123456 volumes: - ./mysql.cnf:/etc/mysql/conf.d/mysql.
version: '3.1'
services:
db:
image: mysql
network_mode: host
environment:
MYSQL_ROOT_PASSWORD: 123456
volumes:
- ./mysql.cnf:/etc/mysql/conf.d/mysql.cnf
ports:
- 3306:3306
container_name: mydb
zookeeper:
image: confluentinc/cp-zookeeper
network_mode: host
ports:
- "2181:2181"
environment:
ZOOKEEPER_CLIENT_PORT: 2181
container_name: myzookeeper
kafka:
image: confluentinc/cp-kafka
network_mode: host
depends_on:
- zookeeper
- db
ports:
- "9092:9092"
environment:
KAFKA_ZOOKEEPER_CONNECT: localhost:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_BROKER_ID: 1
KAFKA_MIN_INSYNC_REPLICAS: 1
container_name: mykafka
connector:
image: debezium/connect:0.10
network_mode: host
ports:
- "8083:8083"
environment:
GROUP_ID: 1
CONFIG_STORAGE_TOPIC: my_connect_configs
OFFSET_STORAGE_TOPIC: my_connect_offsets
BOOTSTRAP_SERVERS: localhost:9092
HOST_NAME: localhost
depends_on:
- zookeeper
- db
- kafka
container_name: myconnector
当我想要创建连接器时,我收到以下错误:
curl -i -X POST -H "Accept:application/json" -H "Content-Type:application/json" localhost:8083/connectors/ -d '{ "name": "mystore-connector", "config": { "connector.class": "io.debezium.connector.mysql.MySqlConnector", "tasks.max": "1", "database.hostname": "localhost", "database.port": "3306", "database.user": "morteza", "database.password": "morteza_password", "database.server.id": "223344", "database.server.name": "dbserver1", "database.whitelist": "mystore", "database.history.kafka.bootstrap.servers": "localhost:9092", "database.history.kafka.topic": "dbhistory.mystore" } }'
HTTP/1.1 400 Bad Request
Date: Fri, 08 Mar 2019 09:48:34 GMT
Content-Type: application/json
Content-Length: 255
Server: Jetty(9.4.12.v20180830)
{"error_code":400,"message":"Connector configuration is invalid and contains the following 1 error(s):\nUnable to connect: Public Key Retrieval is not allowed\nYou can also find the above list of errors at the endpoint `/{connectorType}/config/validate`"}
Debezium连接器显示此错误:
The connection password is empty [io.debezium.connector.mysql.MySqlConnector]
myconnector | 2019-03-08 09:38:26,755 INFO || Failed testing connection for jdbc:mysql://localhost:3306/?useInformationSchema=true&nullCatalogMeansCurrent=false&useSSL=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=CONVERT_TO_NULL with user 'morteza' [io.debezium.connector.mysql.MySqlConnector]
正如您所看到的,我已经设置了database.password字段的值,但是我收到了数据库密码的错误。正如Jiri Pechanec所建议的,我将docker-compose.yml文件中的image:mysql更改为image:mysql:5.7,现在它工作正常 在Debezium 0.9中,当源MySQL数据库中的用户未被授予所需的权限时,可能会出现不允许公钥检索的错误。在Debezium 0.8中,错误是无法连接:通信链路故障
我在这里写了一篇关于这一点的文章,因为我遇到了这个问题,错误消息有点不明显:不允许公钥检索是从create POST返回的错误。中的一些建议可能值得一试。其中一个建议是,这只是一个无效的用户名/密码组合。下面是一个示例,如果对config.Robin有用的话,我甚至在root和pass 123456中也收到了相同的错误。我认为问题在于此消息不允许公钥检索。IIRC在过去使用SSL时,JDBC驱动程序和MySQL驱动程序版本之间存在兼容性问题。例如,请参见@JiriPechanec谢谢。我将mysql版本改为5.7,设置为image:mysql:5.7,效果很好!我想知道为什么它不被使用。我发现debezium 0.9将支持mysql 8。顺便问一下,你能发布你的答案吗,这样其他用户就可以在类似的情况下使用它了?我使用的是camel debezium mysql插件,它使用debezium connectro 1.3.1.Final版本,显然它没有这个属性database.allowPublicKeyRetrieval。