在使用 Kettle 9.1 连接 MySQL 时,遇到错误提示 Connection failed. Verify all connection parameters and confirm that the appropriate driver is installed.
通常是由于以下几个原因导致的:
1. MySQL 驱动未正确配置
Kettle 需要 MySQL JDBC 驱动才能连接 MySQL 数据库。
解决方案:确保下载了兼容的 MySQL 驱动程序(.jar
文件)。对于 MySQL 8.x,推荐使用最新版本的 MySQL Connector/J 驱动。驱动下载地址:MySQL Connector/J
将下载的 mysql-connector-java-x.x.x.jar
文件复制到 Kettle 的驱动文件夹:路径:data-integration/lib/
重启 Kettle。
2. JDBC URL 配置错误
检查数据库连接的 URL 是否正确。
正确的 JDBC URL 示例:
如果是 MySQL 8.x:
jdbc:mysql://localhost:3306/your_database_name?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
如果是 MySQL 5.x:
jdbc:mysql://localhost:3306/your_database_name?useSSL=false&serverTimezone=UTC
参数说明:
useSSL=false
:禁用 SSL(如果未配置 SSL)。allowPublicKeyRetrieval=true
:允许公钥检索(MySQL 8.x 必须)。serverTimezone=UTC
:设置服务器时区,避免时区问题。
3. MySQL 用户权限问题
确保 MySQL 用户有权限访问目标数据库。
解决方案:登录 MySQL:
mysql -u root -p
检查用户权限:
SHOW GRANTS FOR 'your_user'@'your_host';
如果权限不足,授予权限:
GRANT ALL PRIVILEGES ON your_database.* TO 'your_user'@'your_host' IDENTIFIED BY 'your_password';
FLUSH PRIVILEGES;
4. MySQL 服务器配置
MySQL 服务器可能未启用远程访问或绑定地址配置错误。
解决方案:检查 MySQL 配置文件(通常是 my.cnf
或 my.ini
),确保 bind-address
设置为 0.0.0.0
或目标 IP 地址。
重启 MySQL 服务:bash
复制代码
sudo service mysql restart
5. 驱动兼容性问题
Kettle 9.1 使用的 Java 版本可能与 MySQL 驱动程序不兼容。
解决方案:检查 Java 版本:
java -version
如果 Java 版本低于 8,建议升级到 Java 8 或更高版本。
6. 网络或防火墙问题
如果数据库不在本地服务器上,可能是由于网络或防火墙限制导致无法连接。
解决方案:测试目标数据库的端口是否开放:
telnet your_database_host 3306
确保防火墙或安全组规则允许 3306 端口的入站流量。
7. Kettle 的环境变量
Kettle 使用的 JDBC 驱动路径可能未正确加载。
解决方案: 确保 mysql-connector-java
驱动被正确加载:在 Kettle 的环境变量文件 set-pentaho-env.sh
(Linux)或 set-pentaho-env.bat
(Windows)中,添加如下配置:
CLASSPATH=$CLASSPATH:/path/to/mysql-connector-java-x.x.x.jar
排查方法总结
按照以下顺序排查问题:
确保驱动文件正确放置并加载。
检查 JDBC URL 和 MySQL 用户权限。
确认网络连通性和 MySQL 服务器配置。
检查 Java 和 MySQL 驱动的版本兼容性。
如果问题仍未解决,请提供详细的错误日志以进一步排查。
发布者:myrgd,转载请注明出处:https://www.object-c.cn/4712