在使用MySQL 8.0.4及更高版本时,有时会遇到与Flyway Docker镜像的MariaDB连接器不兼容的问题。这是因为MySQL引入了新的默认身份验证方法caching_sha2_password
,而MariaDB连接器不支持这一方法,导致出现错误。
解决方案一:还原身份验证插件
1、修改docker-compose.yml
文件:在你的docker-compose.yml
文件中找到docker-mysql
服务,并添加一个command
参数来指定默认的身份验证插件。
services:
docker-mysql:
image: mysql:8.0.4
command: --default-authentication-plugin=mysql_native_password
# 其他配置...
2、重启Docker容器:保存文件后,重启Docker容器以应用更改。
解决方案二:更改现有用户的身份验证方法
1、连接到MySQL数据库:使用MySQL客户端工具连接到数据库。
2、执行SQL命令:对每个使用caching_sha2_password
的用户,执行以下SQL命令来更改其身份验证方法。
ALTER USER 'username'@'ip_address' IDENTIFIED WITH
mysql_native_password BY 'password';
请将'username'
替换为你的用户名,'ip_address'
替换为用户的IP地址或通配符'%'
,'password'
替换为用户的密码。
3、注意:使用此命令时请谨慎,因为它会更改用户的身份验证信息。
解决方案三:使用官方MySQL JDBC驱动程序
1、下载官方驱动:访问MySQL官方网站,下载适用于你的环境的JDBC驱动程序。
2、安装驱动到Flyway容器:将下载的JDBC驱动程序安装到Flyway容器中,确保兼容。
3、配置JDBC URL:在你的应用程序配置中,添加或修改JDBC URL,包含以下参数,解决SSL连接警告:
jdbc:mysql://hostname:port/database?
verifyServerCertificate=false&useSSL=true
这样可禁用服务器证书验证并启用SSL连接。