Rundeck 3.3.6社区-从H2 Db迁移到MySql 8.0

Rundeck 3.3.6社区-从H2 Db迁移到MySql 8.0,mysql,rundeck,Mysql,Rundeck,我的Ansible/Rundeck主机是一个Ubuntu 20.04 LTS系统。我安装了Ansible to tinker,然后安装了Rundeck。一旦我能够让这两个人正常交谈和工作(在我看来),我认为最好将Rundeck迁移到生产级DB引擎,而不是H2。我在同一台主机上安装了MySQL,并按照Rundeck文档中的指示设置了DB和DB用户。然后,我按照同一文档的指示修改了RD属性文件,但我一直无法连接到数据库 首先是这个错误: WARN internal.JdbcEnvironmentIn

我的Ansible/Rundeck主机是一个Ubuntu 20.04 LTS系统。我安装了Ansible to tinker,然后安装了Rundeck。一旦我能够让这两个人正常交谈和工作(在我看来),我认为最好将Rundeck迁移到生产级DB引擎,而不是H2。我在同一台主机上安装了MySQL,并按照Rundeck文档中的指示设置了DB和DB用户。然后,我按照同一文档的指示修改了RD属性文件,但我一直无法连接到数据库

首先是这个错误:

WARN internal.JdbcEnvironmentInitiator-HHH000341:无法获取连接元数据:无法连接到地址=(主机=10.10.140.23)(端口=3306)(类型=master):套接字无法连接到主机:10.10.140.23,端口:3306。连接被拒绝(连接被拒绝)

因此,我研究了这个问题,并建议在MySQL中验证用户帐户、授权、访问等等——所有这些都可以通过MySQL中的命令行测试来实现

在我的一次搜索中,我看到一些人幸运地删除了useSSL=false或将其设置为true。这导致了我的下一个错误:

WARN internal.JdbcEnvironmentInitiator-HHH000341:无法获取连接元数据:无法连接到地址=(主机=本地主机)(端口=3306)(类型=主机):RSA公钥在客户端不可用(选项ServerRSPublicKeyFile)

在我研究这个错误的过程中,我读到我需要添加一个属性来允许检索RSA密钥,我这样做了,但没有改变任何事情

然后,我下载了OracleMySQLJDBC驱动程序并将其放在var/lib/rundeck/lib文件夹中,并在属性文件中更改了驱动程序类名,然后收到下一个错误

WARN internal.JdbcEnvironmentInitiator-HHH000341:无法获取连接元数据:无法连接到地址=(主机=127.0.0.1)(端口=3306)(类型=master):(conn=355)拒绝用户'sa'@'localhost'的访问(使用密码:是)
当前字符集为UTF-8。如果使用其他字符集设置了密码,请考虑使用“PaseWord字符编码”< /P>选项。 当我试图运行Rundeck时


现在我又回到了H2,我是一个Linux新手,无法理解问题所在。有谁能给我指出一个有帮助的方向吗?因为Rundeck停靠使用MySQL数据库时,可能是旧的,也可能是缺少了一些内容,因为我在试图解决这个问题时进行的许多搜索指示我执行稍有不同的操作,或者是Rundeck文档甚至没有提到的所有新命令。

我已经解决了同样的问题停止Rundeck实例,稍后在
Rundeck config.properties
文件中添加以下配置(在
/etc/Rundeck
路径中,选中):

#与allowPublicKeyRetrieval=true一起使用
dataSource.url=jdbc:mysql://mysql_server_ip/rundeck?autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true
dataSource.username=rundeckuser
dataSource.password=您的密码
dataSource.drivercassname=com.mysql.cj.jdbc.Driver
#在后端存储项目
rundeck.projectsStorageType=db
接下来,使用
mysqladmin flush hosts-u root-p
刷新数据库端的连接

现在,启动Rundeck服务,您可以使用MySQL 8作为项目的数据源

编辑:在MySQL端,确保您正确创建了用户,我遵循以下步骤:

创建数据库rundeck;
创建由“P4ssw0rd”标识的用户“rundeckuser”@“%”;
将rundeck.*上的所有权限授予“rundeck用户”@“%”;
出口

还有MySQL 8是如何存储用户密码的。

我希望这能起作用,但我的结果是:“WARN internal.jdbc environmentinitiator-hh000341:无法获取连接元数据:用户'sa'@'localhost的访问被拒绝”(使用密码:YES)”确保您在MySQL上正确创建了用户(我更新了答案)我有每个文档,我验证了我可以与该用户连接到MySQL并查看授权和数据库,在本例中,它被称为rundeckdb。看看这个:可能是密码类型有问题。我能够在system.log输出中检测到:“无法从ClassLoader:org.springframework.boot.loader加载class:com.mysql.jc.jdbc.Driver。”。很明显,MySQL jdbc驱动程序没有被加载,或者根本找不到。我将文件放在/var/lib/rundeck/lib中。我是否需要为该文件授予任何特殊权限,或者应该将其命名为特定的名称。我在Ubuntu中使用wget下载它。文件名为mysql-connector-java-8.0.22.jar。