Haj*_*bor 5 mysql qt mysql-8.0
我正在开发一个可以连接到 mysql 服务器的 qt (5.12.2) 应用程序。最近我尝试连接到 mysql 8 服务器。我无法连接,并收到以下错误消息:
Authentication plugin 'caching_sha2_password' cannot be loaded: The specified module could not be found.
Run Code Online (Sandbox Code Playgroud)
经过一番挖掘,我发现问题出在 mysql 8 中实现的新加密。
此问题的一种解决方法是将服务器设置为旧式身份验证方法。
是否有不切换回传统身份验证的解决方案?
有 2 个可能的问题可能导致此问题。
QMYSQL使用不支持 MySQL 8 和新身份验证方法的 MySQL Connector/C (libmysqlclient.dll) 连接器与驱动程序连接。QODBC旧版本(<8.0)的驱动程序,该版本不支持新的身份验证方法。您可以通过切换或升级到最新的QODBC驱动程序轻松解决此问题。您可以从 MySQL下载页面下载最新版本。通过这个小例子并使用正确的连接器,它就可以工作。
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName("Driver={MySQL ODBC 8.0 Unicode Driver};Server=example.com;Database=test;Uid=user;Port=3306;Pwd=password;WSID=.");
if (!db.open()) {
qDebug() << db.lastError().text();
} else {
qDebug("success");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
339 次 |
| 最近记录: |