Неизвестная переменная 'default-authentication-plugin=mysql_native_password'

Я пытаюсь запустить контейнер MySQL с помощью Docker Compose и получаю ошибку

неизвестная переменная 'default-authentication-plugin=mysql_native_password'.

У меня это есть в моем docker-compose.yml

db:
    image: mysql:8.4
    command: ["mysqld", "--default-authentication-plugin=mysql_native_password"]
    restart: unless-stopped
    ports:
        - 3306:3306
    environment:
        MYSQL_RANDOM_ROOT_PASSWORD: yes
        MYSQL_AUTHENTICATION_PLUGIN: mysql_native_password
        MYSQL_DATABASE: ${MYSQL_DATABASE:-learn}
        MYSQL_USER: ${MYSQL_USER:-learn}
        MYSQL_PASSWORD: ${MYSQL_PASSWORD:-test2024}
    volumes:
        - mysql_dev:/var/lib/mysql
        - ./docker/laravel/config/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
    healthcheck:
        test: [ "CMD", 'mysqladmin', 'ping', '-h', 'localhost', '-u', '$$MYSQl_USER', '-p$$MYSQL_PASSWORD' ]
        timeout: 20s
        retries: 2

И в файле my.cnf у меня есть это:

[mysqld]
mysql_native_password=ON
default-authentication-plugin=mysql_native_password
general_log = 0
general_log_file = /var/lib/mysql/general.log
default_time_zone='+00:00'

Я попытался изменить версию образа MySQL, но это не сработало. Если я понизлю версию до 5.7 и изменю имя тома, это сработает, но я хочу обновить версию MySQL.

Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
11
0
11 711
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В Mysql 8.4 нет параметра default-authentication-plugin. Вы можете получить все параметры mysqld и описание для --mysql-native-password, как показано ниже.

mysqld --verbose --help
...
  --mysql-native-password[=name] 
                      Enable or disable mysql_native_password plugin. Possible
                      values are ON, OFF, FORCE (don't start if the plugin
                      fails to load).
...

Итак, для вашего docker-compose.yml измените строку с

    command: ["mysqld", "--default-authentication-plugin=mysql_native_password"]

к

    command: ["mysqld", "--mysql-native-password=ON"]

и закомментируйте default-authentication-plugin в my.cnf

[mysqld]
mysql_native_password=ON
#default-authentication-plugin=mysql_native_password
general_log = 0
general_log_file = /var/lib/mysql/general.log
default_time_zone='+00:00'

Затем попробуйте еще раз перезагрузить контейнер; он должен работать.

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