首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何公开mysql端口?

问如何公开mysql端口?
EN

Stack Overflow用户
提问于 2022-02-13 10:48:59
回答 1查看 1.6K关注 0票数 3

我试图公开端口3310以允许远程MySQL连接。到目前为止,我有这样的配置:

代码语言:javascript
复制
  database:
    container_name: sfapi_db
    restart: always
    ports:
      - 3310:3306
    build:
      context: ./docker/database
    environment:
      - MYSQL_DATABASE=${DB_NAME}
      - MYSQL_USER=${DB_USER}
      - MYSQL_PASSWORD=${DB_PWD}
      - MYSQL_ROOT_PASSWORD=${DB_PWD_ROOT}
    volumes:
      - dbdata:/var/lib/mysql
      - type: bind
        source: ./docker/database/my.cnf
        target: /etc/mysql/my.cnf

这是Dockerfile:

代码语言:javascript
复制
FROM mariadb:latest

CMD ["mysqld"]

EXPOSE 3310

在这里,my.cnf:

代码语言:javascript
复制
[client-server]
# Port or socket location where to connect
port = 3310
socket = /run/mysqld/mysqld.sock

# Import all .cnf files from configuration directory
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mariadb.conf.d/

当我运行docker-compose up --build -d并访问容器列表时,我得到:

​

​

我还使用sudo ufw allow 3310打开服务器上的端口。另外,我不能使用3306端口,因为它是由另一个容器使用的,这就是我使用3310的原因。

由于某些原因,当我转到那里并检查端口3310是否打开时,我总是得到关闭的端口。

我怎么才能解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-13 11:31:24

如果my.cnf驻留在容器中。那么所使用的端口应该是3306

代码语言:javascript
复制
[client-server]
# Port or socket location where to connect
port = 3306
socket = /run/mysqld/mysqld.sock

因为在容器的上下文中,这是公开mysql的端口。

因此,可能发生的情况是公开3306,但是容器为mysql服务器分配了3310。因此,3306确实已关闭。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71099929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档