MySQL внутри Docker Compose в кодовом пространстве GitHub 16 ГБ оперативной памяти сталкивается с проблемами

Я пытался запустить MySQL независимо. Это один из многих сервисов проекта с открытым исходным кодом, который я пытаюсь запустить. Я узнал, какая часть вызывает проблемы, это «--default-authentication-plugin=mysql_native_password». Итак, этот docker-compose.yml не работает:

  db:
    image: mysql:8
    restart: always
    command: --default-authentication-plugin=mysql_native_password --sql_mode = "" --skip-name-resolve --tls-version = ""
    environment:
      MYSQL_ROOT_PASSWORD: ${MASTER_MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: ${MASTER_MYSQL_DATABASE}
      MYSQL_USER: ${MASTER_MYSQL_USER}
      MYSQL_PASSWORD: ${MASTER_MYSQL_PASSWORD}

Это дает мне эту ошибку:

    /workspaces/cron-job.org (master) $ docker compose up
    WARN[0000] Found orphan containers ([cron-joborg-mysql-1]) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up. 
    [+] Running 2/2
     ✔ Network cron-joborg_default  Created                                                                                                                                                                                          0.1s 
     ✔ Container cron-joborg-db-1   Created                                                                                                                                                                                          0.2s 
    Attaching to db-1
    db-1  | 2024-06-06 03:57:28+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.4.0-1.el9 started.
    db-1  | 2024-06-06 03:57:28+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
    db-1  | 2024-06-06 03:57:28+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.4.0-1.el9 started.
    db-1  | 2024-06-06 03:57:28+00:00 [Note] [Entrypoint]: Initializing database files
    db-1  | 2024-06-06T03:57:28.550651Z 0 [System] [MY-015017] [Server] MySQL Server Initialization - start.
    db-1  | 2024-06-06T03:57:28.551801Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.4.0) initializing of server in progress as process 80
    db-1  | 2024-06-06T03:57:28.572331Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
    db-1  | 2024-06-06T03:57:29.694256Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
    db-1  | 2024-06-06T03:57:35.532272Z 0 [Warning] [MY-013595] [Server] Failed to initialize TLS for channel: mysql_main. See below for the description of exact issue.
    db-1  | 2024-06-06T03:57:35.532301Z 0 [Warning] [MY-010069] [Server] Failed to set up SSL because of the following SSL library error: TLS version is invalid
    db-1  | 2024-06-06T03:57:35.688029Z 0 [ERROR] [MY-000067] [Server] unknown variable 'default-authentication-plugin=mysql_native_password'.
    db-1  | 2024-06-06T03:57:35.688442Z 0 [ERROR] [MY-013236] [Server] The designated data directory /var/lib/mysql/ is unusable. You can remove all files that the server added to it.
    db-1  | 2024-06-06T03:57:35.688460Z 0 [ERROR] [MY-010119] [Server] Aborting
    db-1  | 2024-06-06T03:57:37.256251Z 0 [System] [MY-015018] [Server] MySQL Server Initialization - end.
    db-1 exited with code 0

Я пытался найти ошибки одну за другой, но не смог их исправить. Потратил на это 1,5 часа. Я попробовал реализовать этот ответ: https://stackoverflow.com/a/50130973/16345931 Но с заменой CONTAINER_ID на «docker exec -it CONTAINER_ID bash» я вижу приглашение «пароль:», пока не наберу второй символ, а затем он вернется в командный режим. Я нашел CONTAINER_ID, используя docker ps ofc.

Эта конфигурация работает отлично:

      db:
        image: mysql:8
        restart: always
        command: --sql_mode = "" --skip-name-resolve --tls-version = ""
        environment:
          MYSQL_ROOT_PASSWORD: ${MASTER_MYSQL_ROOT_PASSWORD}
          MYSQL_DATABASE: ${MASTER_MYSQL_DATABASE}
          MYSQL_USER: ${MASTER_MYSQL_USER}
          MYSQL_PASSWORD: ${MASTER_MYSQL_PASSWORD}

Я только что нашел это, но еще не пробовал: «Начиная с MySQL 8.0, caching_sha2_password является как предпочтительным, так и плагином аутентификации по умолчанию». - MySQL Server 8.0.12 — для новых пользователей необходимо указать плагин аутентификации

Это верно?

Может ли кто-нибудь попробовать запустить файл компоновки Docker в кодовом пространстве GitHub? И необходим ли «--default-authentication-plugin=mysql_native_password» для работы MySQL? Помогите, я потратил на это слишком много времени.

В версии 8.4 плагин по умолчанию отключен — dev.mysql.com/doc/refman/8.4/en/…

user1191247 06.06.2024 09:37

@user1191247 user1191247 Если изображение mysql:8, разве это не 8.0?

Bob the Builder 06.06.2024 11:46

Ваши журналы показывают MySQL Server 8.4.0-1.el9

user1191247 06.06.2024 12:26
image: mysql:8 относится к последней версии 8.x. Если вам нужна последняя версия 8.0 (на данный момент 8.0.37), вам следует использовать image: mysql:8.0.
user1191247 06.06.2024 13:16

Я обнаружил проблему с последней версией MySQL, из-за которой «-default-authentication-plugin» отключен по умолчанию с прошлого месяца: github.com/docker-library/mysql/issues/1048

Bob the Builder 06.06.2024 16:30
Освоение архитектуры микросервисов с 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
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
5
93
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Как указано в руководстве MySQL по плагину default-authentication-plugin:

Из-за этой уменьшенной роли default_authentication_plugin устарел с MySQL 8.0.27 и подлежит удалению в будущей версии MySQL.

Эта серверная переменная была удалена из версии 8.4, поэтому она не нужна.

В будущем, пожалуйста, задавайте такие вопросы на дочернем сайте SO DBA, поскольку он не имеет ничего общего с программированием или разработкой ПО, а только с внутренними операциями MySQL!

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