docker-compose 配置mysql,密码无效问题修复----已实践

本文档介绍了如何通过Docker Compose配置MySQL服务,包括端口映射、环境变量设置等。当遇到密码无效的问题时,提供了一种解决方案,涉及修改配置文件、使用skip-grant-tables、设置新密码、允许远程连接等步骤,最终成功解决了密码错误的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysql docker-compse 配置

version: "3"
services:
  mysql:
    image: mysql
    ports:
      - 3306:3306
    container_name: mysql
    restart: always
    environment: 
      MYSQL_ROOT_PASSWORD: fu*9!fhs
    command:
      --character-set-server=utf8mb4
    volumes:
      - ~/docker/mysql/config:/etc/mysql/my.cnf
      - ~/docker/mysql/data:/var/lib/mysql/*
      - ~/docker/mysql/entrypoint/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d

docker-compse 配置mysql密码无效解决方案

【问题原因】: docker-compose 配置mysql的密码无效,输入密码表示密码错误

  • 将配置文件从容器映射出来,并加上 skip-grant-tables

    # Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
    #
    # This program is free software; you can redistribute it and/or modify
    # it under the terms of the GNU General Public License as published by
    # the Free Software Foundation; version 2 of the License.
    #
    # This program is distributed in the hope that it will be useful,
    # but WITHOUT ANY WARRANTY; without even the implied warranty of
    # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    # GNU General Public License for more details.
    #
    # You should have received a copy of the GNU General Public License
    # along with this program; if not, write to the Free Software
    # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
    
    #
    # The MySQL  Server configuration file.
    #
    # For explanations see
    # http://dev.mysql.com/doc/mysql/en/server-system-variables.html
    
    [mysqld]
    pid-file        = /var/run/mysqld/mysqld.pid
    socket          = /var/run/mysqld/mysqld.sock
    datadir         = /var/lib/mysql
    secure-file-priv= NULL
    skip-grant-tables
    
    # Custom config should go here
    !includedir /etc/mysql/conf.d/
    
  • 重启容器

  • 进入容器

    docker exec -it mysql mysql
    
    • 将mysql的登陆密码设置为空并刷新
    update mysql.user set authentication_string='' where User='root';
    
    flush privileges;
    
  • 将配置文件中的 skip-grant-tables删掉

  • docker exec -it mysql mysql 重新进入mysql

  • 设置新的密码并刷新

    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
    flush privileges;
    
  • 设置远程连接并刷新

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
    flush privileges;
    
  • 重启docker

问题解决

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值