Docker 不设置 MariaDB 密码

mar*_*urg 2 mariadb docker

在我的 docker-compose.yml

version: '3'
services:
  db:
    image: mariadb:latest
    volumes:
      - ./dc_test_db:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: secret
Run Code Online (Sandbox Code Playgroud)

当我通过以下方式连接时:

sudo docker exec -it docker_db_1 mysql -u root -p 
Run Code Online (Sandbox Code Playgroud)

我必须让密码为空才能登录。怎么了?

小智 5

我在 mariadb 的 10.4 版中遇到了这个问题,通过更改为 10.3 版已修复。但是这个问题可能还有另一个原因。

在 Docker 架构中,需要注意的是,镜像在第一次构建后是不可变的。即通过改变docker compose文件中定义的局部变量并重新运行服务或重新启动服务,构建的镜像的初始设置不会发生变化。要应用这些更改,必须再次执行构建映像和容器以及运行服务的步骤。可以按如下方式完成。

1.docker-compose stop(首先我们停止服务)

2.Docker-compose rm(然后我们清理所有相关的容器)

3.Docker-compose up --build -d(最后使用--build选项运行服务,使用新定义的设置重建图像。)

请注意,执行这些步骤将清除存储在容器内的所有数据。

  • 您可能还需要删除附加到容器的持久卷 - 如果有的话。`dockervolume ls` 和 `dockervolume rm VOLUME_NAME` (3认同)
  • `docker compose down` 和 `docker volume rm VOLUME_NAME` 对我来说已经足够了 (2认同)

Tar*_*ani 1

这是因为您是从容器本身内部本地使用客户端。本地连接不要求输入密码。

尝试从您的主机连接到 docker containerip:3306,然后它会要求输入密码