MySQL & Vapor 3: нераспознанный базовый пакет, полная аутентификация не поддерживается

Я хочу соединить базу данных MySQL на моей машине с приложением Vapor 3.
Мой текущий 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 ответ

Решение

Из MySQL 8, если вы хотите использовать его на localhost (незащищенное соединение), то вам нужно отключить безопасность транспортного уровня MySQL. использование unverifiedTLS за transport в MySQLDatabaseConfig инициализатор.

Ваш MySQLDatabaseConfig инициализатор должен выглядеть примерно так:

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

Это должно нормально работать с этой конфигурацией.

Другие вопросы по тегам