如何在Docker上修复“客户端[caching_sha2_password]未知的服务器请求的身份验证方法”?

时间:2019-06-15 05:48:00

标签: mysql docker phpmyadmin docker-compose

我要设置一个沼泽。 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 :(得分:0)

您的命令正确,出现此问题是因为您两次定义了std::string idStr = std::move(id); 键,而第二个键覆盖了第一个键。相反,您应该只定义一次,就像这样:
command