gpt4 book ai didi

mysql - Docker Linux 上的 MariaDB 在外部/内部 IP 之间有两个不同的版本

转载 作者:行者123 更新时间:2023-11-29 09:58:54 25 4
gpt4 key购买 nike

  1. 我将 MariaDB 作为 Docker 运行 - 将端口 3306 暴露给 localhost:3307

enter image description here

  • 通过 localhost:3307 连接数据库


    $ mysql -u tvgift -P 3307 -h localhost -p
    mysql> show databases;
    +--------------------+
    | Database |
    +--------------------+
    | information_schema |
    +--------------------+
    1 row in set (0.00 sec)
  • 通过172.18.0.2:3306连接数据库(我从$ docker inspect <docker ID>获得的IP


    $ mysql -u tvgift -P 3306 -h 172.18.0.2 -p
    mysql> show databases;
    +--------------------+
    | Database |
    +--------------------+
    | information_schema |
    | tvgift |
    +--------------------+
    2 rows in set (0.00 sec)
  • 我尝试了另一个具有两个 IP 的客户端(使用 mycli),结果是相同的。


    $ mycli mysql://tvgift:tvgift@localhost:3307/tvgift
    mariadb tvgift@localhost:tvgift> show databases;
    +--------------------+
    | Database |
    +--------------------+
    | information_schema |
    | tvgift |
    +--------------------+
    2 rows in set
    Time: 0.013s

    $ mycli mysql://tvgift:tvgift@172.18.0.2:3306/tvgift
    mariadb tvgift@172.18.0.2:tvgift> show databases;
    +--------------------+
    | Database |
    +--------------------+
    | information_schema |
    | tvgift |
    +--------------------+
    2 rows in set
    Time: 0.013s
  • 那么,一个容器服务的两个 IP 之间只有 mysql 客户端不同,你能告诉我为什么吗?

    最佳答案

    localhost != 任何 IP 地址。也就是说,

    GRANT ... TO tvgift@'%' ...

    包括

    GRANT ... TO tvgift@'localhost' ...

    如果您想通过 localhost 和 IP 地址或主机名进行连接,则必须提供两个具有相同权限的 GRANT(例如 ON tvgift .*).

    关于mysql - Docker Linux 上的 MariaDB 在外部/内部 IP 之间有两个不同的版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53386231/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com