一、目的
在编写海豚的部署脚本时,遇到MySQL的jdbc连接报错问题,发现这与hive部署里MySQL的jdbc连接也不同
二、MySQL版本
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.31 |
+-----------+
1 row in set (0.00 sec)
三、MySQL8.0连接jdbc报错
(一)报错: Public Key Retrieval is not allowed
1、原先jdbc的脚本内容
SPRING_DATASOURCE_URL="jdbc:mysql://$hostname:3306/dolphinscheduler?useSSL=false&useUnicode=true&characterEncoding=UTF-8"
2、结果报错Public Key Retrieval is not allowed
3、解决方案
(1)解决方案一
把useSSL=false 改为 useSSL= true
SPRING_DATASOURCE_URL="jdbc:mysql://$hostname:3306/dolphinscheduler?useSSL=true&useUnicode=true&characterEncoding=UTF-8"
(2)解决方案二
增加allowPublicKeyRetrieval=true
SPRING_DATASOURCE_URL="jdbc:mysql://$hostname:3306/dolphinscheduler?allowPublicKeyRetrieval=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8"
4、解决效果
这两种方案都测试过,都可行。建议方案二,增加allowPublicKeyRetrieval=true
(二)报错:failed to parse the connection string near ';useUnicode=true&characterEncoding=UTF-8'
1、原先jdbc的脚本内容
SPRING_DATASOURCE_URL="jdbc:mysql://$hostname:3306/dolphinscheduler?useSSL=false&useUnicode=true&characterEncoding=UTF-8"
2、结果报错
Caused by: com.mysql.cj.exceptions.WrongArgumentException: Malformed database URL, failed to parse the connection string near ';useUnicode=true&characterEncoding=UTF-8'
3、解决方案
不要用& 直接用&
例如
SPRING_DATASOURCE_URL="jdbc:mysql://$hostname:3306/dolphinscheduler?allowPublicKeyRetrieval=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8"
乐于奉献共享,帮助你我他!