Quiero conectar una base de datos MySQL en mi máquina con una aplicación Vapor 3.
Mi archivo configure.swift actual tiene el siguiente aspecto:
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)Esto funciona bien. Sin embargo, dado que necesito agregar mi modelo a la configuración de migración, también debo agregar:
var migrations = MigrationConfig() migrations.add(model: Posts.self, database: .mysql) services.register(migrations)Al ejecutar la aplicación esta vez, veo un error que dice:
La autenticación completa no es compatible con conexiones no seguras.
Después de investigar un poco, parece que este error se puede solucionar cambiando la lógica de la contraseña de caching_sha2_password a mysql_native_password .
Sin embargo, eso me deja con el error que dice:
Paquete básico no reconocido.
¿Cómo puedo solucionar esto?
Desde MySQL 8, si desea usarlo en localhost (conexión no segura), debe deshabilitar la seguridad de la capa de transporte de MySQL. Utilice TLS unverifiedTLS para transport en el inicializador MySQLDatabaseConfig .
Su inicializador MySQLDatabaseConfig debería verse así:
let config = MySQLDatabaseConfig( hostname: "127.0.0.1", port: 3306, username: "dev", password: "", database: "test", transport: MySQLTransportConfig.unverifiedTLS )Debería funcionar bien con esta configuración.