MySQL&Vapor 3:无法识别的基本数据包,不支持完全身份验证

问题描述 投票:2回答:1

我想在我的机器上使用Vapor 3应用程序连接MySQL数据库。 我当前的configure.swift文件如下所示:

try services.register(FluentMySQLProvider())

...

let mysqlConfig = MySQLDatabaseConfig(
    username: "dev",
    password: "",
    database: "test"
)
let mysql = MySQLDatabase(config: mysqlConfig)

var databases = DatabasesConfig()
databases.add(database: mysql, as: .mysql)
services.register(databases)

这很好用。但是,由于我需要将我的模型添加到迁移配置中,我还需要添加:

var migrations = MigrationConfig()
migrations.add(model: Posts.self, database: .mysql)
services.register(migrations)

这次运行应用程序时,我看到一个错误说:

不安全连接不支持完全身份验证。

经过一些研究,似乎可以通过将密码逻辑从caching_sha2_password更改为mysql_native_password来克服此错误。 但是,这让我有错误说:

无法识别的基本数据包。

我该如何解决?

swift vapor vapor-fluent fluent-mysql
1个回答
3
投票

如果你想在localhost(不安全连接)上使用MySQL 8,那么你需要禁用MySQL传输层安全性。在unverifiedTLS初始化程序中使用transport作为MySQLDatabaseConfig

您的MySQLDatabaseConfig初始化程序应如下所示:

let config = MySQLDatabaseConfig(
    hostname: "127.0.0.1",
    port: 3306,
    username: "dev",
    password: "",
    database: "test",
    transport: MySQLTransportConfig.unverifiedTLS
)

它应该可以正常使用此配置。

© www.soinside.com 2019 - 2024. All rights reserved.