Docker mysql 1045處理辦法


一、遇到問題

今天想部署程序突然發現mysql連接不上了,如下圖所示:

 

 二、解決方式

我的dokcer-compose.yml配置:

version: '3.1'
services:
        db:
           restart: always
           image: mysql:5.7.20
           environment:
             MYSQL_ROOT_PASSWORD: 123456
           command:
             --default-authentication-plugin=mysql_native_password
             --character-set-server=utf8mb4
             --collation-server=utf8mb4_unicode_ci
             --explicit_defaults_for_timestamp=true
             --lower_case_table_names=1
           ports:
              - '3306:3306'
           volumes:
              - ./data:/var/lib/mysql
              - ./conf:/etc/mysql/conf.d
              - ./logs:/logs

        # MySQL 的Web客戶端
        adminer:
          image: adminer
          restart: always
          ports:
             - '8081:8080'

 1、通過vi命令直接修改my.cnf

vi /usr/local/docker/mysql/conf/my.cnf
#加入下面這句話
[mysqld]
skip-grant-tables

2、重啟mysql,讓配置生效

#在mysql目錄下
docker-compose down
docker-compose up -d

3、通過docker交互命令訪問容器

#交互命令
docker exec -it e277ad12c23e /bin/bash

如下圖所示,不需要密碼已經進入到mysql

 

4、重置密碼,我用的是mysql8,其他版本命令會有區別

#選擇數據庫
use mysql

#更新密碼
UPDATE user SET authentication_string="" WHERE user="root";

#刷新權限 flush privileges;

#退出
quit

7、修改配置文件,重啟mysql

vi /var/lib/docker/overlay2/54937c49054d044e22bd53c1ff1f763614426bc39b27ef2bfbe1f8edb583e3fa/diff/etc/mysql/my.cnf
#刪除下面這句話
skip-grant-tables

8、重啟mysql

#在mysql目錄下
docker-compose down
docker-compose up -d

9、再次進入容器,並連接mysql

#設置密碼驗證方式,並重新設置密碼
ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

 

 

參考教程:https://blog.csdn.net/qq_42348937/article/details/86326470


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM