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

Я хочу подключить базу данных 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 Ответ

0 голосов
/ 22 января 2019

Из 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
)

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

...