mysql - 使用 docker-compose 运行 MySql;登录错误 : "The server requested authentication method unknown to the client"

标签 mysql docker docker-compose

我需要运行 MySql docker 容器。按照 MySql 官方 Docker 存储库 ( https://hub.docker.com/_/mysql/ ) 上的说明,我执行了以下步骤:

第一步,我编写了如下的stack.yml文件,然后运行:docker-compose -f stack.yml up

version: '3.1'

services:

  db:
    image: mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example

  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080

第 2 步。浏览到 http://localhost:8080/

显示登录表单。它说:

系统:MySql

服务器:db

然后我输入root 作为用户名和example 作为密码,并将数据库文本框留空,然后单击登录。 它显示错误: “SQLSTATE[HY000] [2054] 服务器请求客户端未知的身份验证方法

任何有关如何解决此问题的提示/线索将不胜感激。提前致谢!

=========

以下来自终端:

docker-compose -f stack.yml up

Starting hibernate_db_1      ... done
Starting hibernate_adminer_1 ... done
Attaching to hibernate_db_1, hibernate_adminer_1
db_1       | 2018-05-23T07:34:08.186378Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
db_1       | 2018-05-23T07:34:08.186678Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.11) starting as process 1
db_1       | mbind: Operation not permitted
db_1       | mbind: Operation not permitted
adminer_1  | PHP 7.2.5 Development Server started at Wed May 23 07:34:08 2018
db_1       | 2018-05-23T07:34:09.011741Z 0 [System] [MY-010229] [Server] Starting crash recovery...
db_1       | 2018-05-23T07:34:09.012443Z 0 [System] [MY-010232] [Server] Crash recovery finished.
db_1       | 2018-05-23T07:34:09.214122Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
db_1       | 2018-05-23T07:34:09.226905Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
db_1       | 2018-05-23T07:34:09.255716Z 0 [Warning] [MY-010315] [Server] 'user' entry 'mysql.infoschema@localhost' ignored in --skip-name-resolve mode.
db_1       | 2018-05-23T07:34:09.256491Z 0 [Warning] [MY-010315] [Server] 'user' entry 'mysql.session@localhost' ignored in --skip-name-resolve mode.
db_1       | 2018-05-23T07:34:09.256797Z 0 [Warning] [MY-010315] [Server] 'user' entry 'mysql.sys@localhost' ignored in --skip-name-resolve mode.
db_1       | 2018-05-23T07:34:09.257188Z 0 [Warning] [MY-010315] [Server] 'user' entry 'root@localhost' ignored in --skip-name-resolve mode.
db_1       | 2018-05-23T07:34:09.257654Z 0 [Warning] [MY-010323] [Server] 'db' entry 'performance_schema mysql.session@localhost' ignored in --skip-name-resolve mode.
db_1       | 2018-05-23T07:34:09.258015Z 0 [Warning] [MY-010323] [Server] 'db' entry 'sys mysql.sys@localhost' ignored in --skip-name-resolve mode.
db_1       | 2018-05-23T07:34:09.258420Z 0 [Warning] [MY-010311] [Server] 'proxies_priv' entry '@ root@localhost' ignored in --skip-name-resolve mode.
db_1       | 2018-05-23T07:34:09.273119Z 0 [Warning] [MY-010330] [Server] 'tables_priv' entry 'user mysql.session@localhost' ignored in --skip-name-resolve mode.
db_1       | 2018-05-23T07:34:09.273798Z 0 [Warning] [MY-010330] [Server] 'tables_priv' entry 'sys_config mysql.sys@localhost' ignored in --skip-name-resolve mode.
db_1       | 2018-05-23T07:34:09.299367Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.11'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server - GPL.

当我浏览到 http://localhost:8080 ,终端打印:

adminer_1  | [Wed May 23 07:34:28 2018] ::ffff:172.18.0.1:35388 [200]: /

我点击登录后,终端打印:

adminer_1  | [Wed May 23 07:34:41 2018] ::ffff:172.18.0.1:35396 [302]: /
adminer_1  | [Wed May 23 07:34:41 2018] ::ffff:172.18.0.1:35398 [403]: /?server=db&username=root

最佳答案

管理员使用一些扩展与 mysql8 兼容,如管理员主页上的要求中可用。 https://www.adminer.org/

adminer with mysql 4.1, 5.0, 5.1, 5.5, 5.6, 5.7, 8.0 through extensions: mysql, mysqli, pdo_mysql

所以你可以恢复到 mysql-5.7

    version: '3.1'

    services:

      db:
        image: mysql:5.7
        restart: always
        environment:
          MYSQL_ROOT_PASSWORD: example
          MYSQL_USER: user
          MYSQL_PASSWORD: pass

      adminer:
        image: adminer
        restart: always
        ports:
          - 8080:8080

关于mysql - 使用 docker-compose 运行 MySql;登录错误 : "The server requested authentication method unknown to the client",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50481403/

相关文章:

mysql - 同一个表中的 bool 值和字符串值

mysql - 在 MySQL 中,更改主键的模式是否会影响其他表中外键的模式?

azure - 使用 terraform 将 docker 镜像推送到 azure 容器注册表

ruby-on-rails - 在 Docker 中使用 nginx 服务 Rails 的预编译 Assets

django - Docker 应用服务器 ip 地址 127.0.0.1 差 0.0.0.0 ip

PHP mysql连接?

mysql - SQL从多列转换为少列?

python - 在 docker 中部署一个最小的 flask 应用程序 - 服务器连接问题

python - 如何检查 Docker 容器微服务中的 python 日志记录

node.js - Dockerizing 一个 React App : The app starts inside the container, 但它不能从暴露的端口访问