Docker 中 MySQL 密码的最佳实践

br0*_*ipe 8 mysql docker

我目前正在使用 docker 容器和 mysql 数据库。每个应用程序在其自己的 docker 容器中都有自己的 mysql 数据库。应用程序和数据库共享一个网络,应用程序本身是通过另一个网络(traefik)访问的。这意味着mysql数据库无法从外部访问。为 mysql 实例设置安全密码有多重要?有最佳实践吗?

更新:现在使用 Docker 秘密

这是我与 nextcloud 一起使用的示例docker-compose.yaml :

services: 
  nextcloud-db:
    image: mariadb
    container_name: nextcloud-db
    command: --transaction-isolation=READ-COMMITTED --log-bin=ROW
    restart: unless-stopped
    volumes:
      - /opt/docker/nextcloud/database:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD_FILE: /run/secrets/mysql_root_password
      MYSQL_PASSWORD_FILE: /run/secrets/mysql_user_password
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
      MYSQL_INITDB_SKIP_TZINFO: 1
    secrets:
      - mysql_root_password
      - mysql_user_password



secrets:
  mysql_root_password:
    file: /opt/docker/secrets/mysql_root_password
  mysql_user_password:
    file: /opt/docker/secrets/mysql_user_password
Run Code Online (Sandbox Code Playgroud)

您可以使用以下命令创建秘密文件:

openssl rand -base64 32 > /opt/docker/secrets/mysql_root_password
openssl rand -base64 32 > /opt/docker/secrets/mysql_user_password
Run Code Online (Sandbox Code Playgroud)

wav*_*der 1

即使您的应用程序位于本地 docker 网络中,您也应该始终致力于在 MySQL 上使用强密码。

\n\n

您永远不知道您的应用程序环境将来何时发生变化,或者哪些用户将在某个时刻访问该本地网络。

\n\n

幸运的是,它\xe2\x80\x99s非常容易通过Docker swarm和Docker compose使用秘密(这些秘密是非常简单的文件,包含安装在容器中的/secrets目录中的密码)。

\n\n

请参阅此处的示例: https: //blog.ruanbekker.com/blog/2017/11/23/use-docker-secrets-with-mysql-on-docker-swarm/

\n