Как исправить «Запрашиваемый сервером метод аутентификации, неизвестный клиенту [caching_sha2_password]» в docker compose? - PullRequest
2 голосов
/ 15 июня 2019

Я настраиваю вампа. Docker-compose работал очень хорошо, пока у меня не возникли некоторые проблемы с контейнером phpmyadmin и mysql. Я не мог подключиться ни из php, ни из phpmyadmin и обычно получал это сообщение об ошибке: mysqli_real_connect(): The server requested authentication method unknown to the client [caching_sha2_password]

Мне удалось решить проблему, просто подключив вход в оболочку контейнера db docker exec -it db mysql -uroot -p и выполнив следующую команду: ALTER USER 'root' IDENTIFIED WITH mysql_native_password by '123456'; Но это скучно, потому что у меня есть партнер, работающий над тем же проектом, и мы должны много меняйте рабочие посты, так что это означает, что каждый раз на этапе разработки перезапускайте docker, поэтому мне было интересно, что не так в моем docker-compose ...

Вот оно:

version: "3.1"
services:
    www:
        build: .
        container_name: app
        ports: 
            - "8001:80"
        volumes:
            - ~/Desktop/WORK_in_progress/camagru/www/:/var/www/html/
        links:
            - db
        networks:
            - default
    db:
        image: mysql:8.0
        container_name: db
        restart: always
        tty: true
        ports: 
            - "3306:3306"
        command: --default-authentication-plugin=mysql_native_password
        command: --innodb-use-native-aio=0
        environment:
            MYSQL_DATABASE: CAMAGRU
            MYSQL_USER: user
            MYSQL_PASSWORD: 123456
            MYSQL_ROOT_PASSWORD: 123456 
        volumes:
            - ~/Desktop/WORK_in_progress/camagru/dump:/docker-entrypoint-initdb.d
            - ~/Desktop/WORK_in_progress/camagru/conf:/etc/mysql/conf.d
            - persistent:/var/lib/mysql
        networks:
            - default
    phpmyadmin:
        container_name: phpmyadmin
        restart: always
        tty: true
        image: phpmyadmin/phpmyadmin
        links: 
            - db:db
        ports:
            - 8000:80
        environment:
            MYSQL_USER: user
            MYSQL_PASSWORD: 123456
            MYSQL_ROOT_PASSWORD: 123456
volumes:
    persistent:

примечание: я не использую файл конфигурации, я немного изменил композицию, которую нашел в сети.

1 Ответ

0 голосов
/ 17 июня 2019

Ваша команда верна, проблема возникает из-за того, что вы дважды определили клавишу command, а вторая переопределяет первую.Вместо этого вы должны определить его только один раз и так:
command: --default-authentication-plugin=mysql_native_password --innodb-use-native-aio=0

...