如何在docker上远程访问mariadb?

Posted

技术标签:

【中文标题】如何在docker上远程访问mariadb?【英文标题】:how to remote access to mariadb on docker? 【发布时间】:2020-04-22 18:54:30 【问题描述】:

我创建了一个包含 mariadb 实例的 docker 容器,但我无法从我的物理机器访问数据库:

我从 docker inspect 获得了 IP 地址,从 docker ps 获得了端口,但 Sequel Pro 给了我连接失败的消息(与 Visual Studio Code 相同)。显然,我可以从 docker 容器内部将自己连接到数据库引擎。

我哪里错了?非常感谢大家! :)


[编辑]感谢所有 cmets...

如果我尝试公开端口,容器不会运行:/

【问题讨论】:

你能ping mariadb 容器吗?如果你在你的本地主机上运行 nmap 来查看暴露了哪些端口呢? 需要将容器内的3306端口绑定到容器外的一个端口。然后,您将使用 Visual Studio 代码和 SQL Pro 中的外部端口。 当你运行容器时,你应该使用参数-p 3306:3306绑定端口 @bishop Bee 在容器运行的机器上,不需要将端口3306映射到容器外部,使用容器IP就足够了。 Docker 内部 IP 地址仅适用于一个非常特定的设置(从 Docker 外部调用,在同一台机器上,它是本机 Linux 主机),我建议永远不要查看它们全部。如果您尝试远程访问数据库或者它是 MacOS 主机,则将无法正常工作。 【参考方案1】:

它对我有用:

    创建一个新的 mariadb 容器
docker container run \
        --name sql-maria \
        -e mysql_ROOT_PASSWORD=12345 \
        -e MYSQL_USER=username \
        -e MYSQL_PASSWORD=12345 \
        -e MYSQL_DATABASE=dbname \
        -p 3306:3306 \
        -d mariadb:10
    查看日志并等待 mariadb 服务器启动
docker container logs -f sql-maria

日志的尾部应该是这样的

2020-02-04 20:02:44 0 [注意] mysqld:准备连接。

    使用您选择的客户端连接到 mariadb。我这里用的是mysql客户端
mysql -h 127.0.0.1 -p -u username dbname

如果您使用的是基于 unix 的系统,则必须使用环回地址 127.0.0.1 而不是 localhost

【讨论】:

以上是关于如何在docker上远程访问mariadb?的主要内容,如果未能解决你的问题,请参考以下文章

mariadb 允许远程访问

配置MariaDB数据库服务端远程访问

MariaDB(mysql)远程访问设置

如何连接到在 docker 容器上运行的远程 Jupyter Notebook?

如何将我的 docker 连接到远程数据库?

如何打开MySQL中root账户的远程登录