flink-cdc public key retrieval is not allowed
时间: 2024-12-25 19:23:25 浏览: 2
### 解决 Flink CDC 中 `public key retrieval is not allowed` 的错误
当遇到 `Public Key Retrieval is not allowed` 错误时,通常是因为 MySQL 驱动程序尝试获取服务器的公钥以便验证身份认证的安全性。然而,默认情况下此操作被禁用以提高安全性。
为了使 Flink CDC 正常工作并解决该问题,在 JDBC URL 后面添加参数 `allowPublicKeyRetrieval=true` 即可[^1]:
```java
String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&allowPublicKeyRetrieval=true";
Properties properties = new Properties();
properties.setProperty("user", "your_username");
properties.setProperty("password", "your_password");
// 使用上述配置创建数据源或连接对象
```
对于 Flink CDC 特定场景下,如果是在定义 Debezium 连接器时出现问题,则可以在启动命令中的表属性部分指定完整的 JDBC 字符串来包含必要的选项:
```sql
CREATE TABLE my_table (
id BIGINT,
name STRING,
PRIMARY KEY (id)
) WITH (
'connector' = 'mysql-cdc',
'hostname' = 'localhost',
'port' = '3306',
'username' = 'your_username',
'password' = 'your_password',
'database-name' = 'mydb',
'table-name' = 'my_table',
'scan.startup.mode' = 'initial',
'debezium.property.url.params'='useSSL=false&allowPublicKeyRetrieval=true'
);
```
通过这种方式可以确保在建立与 MySQL 数据库之间的安全通信通道的同时允许公共密钥检索过程正常执行[^2]。
阅读全文