代码之家  ›  专栏  ›  技术社区  ›  LinusGeffarth

mysql&vapor 3:无法识别的基本数据包,不支持完全授权

  •  2
  • LinusGeffarth  · 技术社区  · 5 年前

    我想用Vapor3应用程序连接我机器上的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 .
    然而,这让我不得不说:

    无法识别的基本数据包。

    我该怎么解决这个问题?

    1 回复  |  直到 5 年前
        1
  •  3
  •   Mukesh    5 年前

    如果你想在mysql 8上使用它 localhost (不安全的连接)然后需要禁用MySQL传输层安全性。使用 unverifiedTLS 对于 transport 在里面 MySQLDatabaseConfig 初始化器。

    你的 mysqldatabaseconfig(mysqldatabaseconfig) 初始值设定项应如下所示:

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

    它在这种配置下应该可以正常工作。