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
)
Это должно нормально работать с этой конфигурацией.