我正在尝试在 Ktor 应用程序中连接到 MySQL 数据库:
fun initDB() {
val url = "jdbc:mysql://user:pass@localhost:3306/databasename?useUnicode=true&serverTimezone=UTC"
val driver = "com.mysql.cj.jdbc.Driver"
Database.connect(url, driver)
}
...
fun getUsers(): String {
var json = ""
transaction {
val dbResult = Users.selectAll().orderBy(Users.lastName, true).limit(10)
...
json = Gson().toJson(users);
}
return json
}
但我收到以下错误:
java.sql.SQLException:无法加载身份验证插件“caching_sha2_password”
为什么会这样?以及如何解决?
UPD
最终我找到了修复它的方法:我通过命令在 MySQL 中创建了新用户
CREATE USER 'nativeuser'@'localhost'
IDENTIFIED WITH mysql_native_password BY 'password';
然后授予他所有权限并使用新凭据重新连接。但是第一个问题仍然是实际的,因为我没有任何设置
default_authentication_plugin=caching_sha2_password
在我的my.ini文件中。