Docker mysql 컨테이너를 mysql8로 업그레이드할 때 발생하는 문제 해결
mysql 동영상 튜토리얼 칼럼에서는 Docker mysql 컨테이너를 mysql8로 업그레이드할 때 발생하는 문제를 소개하고 이를 효과적으로 해결하는 방법을 알려줍니다.
권장(무료): mysql 동영상 튜토리얼
문제 복원
원래 mysql 컨테이너 생성 명령은 다음과 같습니다
docker run --name mysql -v /xxxx/xxx/mysqldata:/var/lib/mysql -p xxx:3306 -d mysql:laster
데이터 디렉터리는 /xxxx/xxx/mysqldata에 마운트됩니다. 아래 리더 mysql 업그레이드 저는 순진하게 mysql: 8.0.11 최신
mysql 이미지를 다운로드한 다음
docker run --name mysql -v /xxxx/xxx/mysqldata:/var/lib/mysql -p xxx:3306 -d mysql:8.0.11
를 실행하여 컨테이너를 생성하고 이를 원래 디렉터리인 /xxxx/xxx/mysqldata
에 마운트했습니다. 결과적으로 컨테이너는 충돌이 발생하여 전혀 시작할 수 없습니다. 로그 보기
docker logs -f -t --tail 70 mysql
로그에 /xxxx/xxx/mysqldata 아래의 플러그인 파일이 버전 5.7에서 생성되었으며 8.0에서 시작할 수 없다고 나와 있습니다. 그런 다음 다시 전환했습니다. 컨테이너를 생성하기 위해 원본 mysql:laster 이미지에 이 디렉터리의 파일이 있다고 말했습니다. 8.0 수정을 시작할 수 없습니다. 이 디렉터리는 너무 쓸모가 없고 새 이미지도 시작할 수 없는 것 같습니다. .
日志说 大概是/xxxx/xxx/mysqldata下面的插件文件是5.7版本创建的 8.0无法启动 然后我有切回原本的 mysql:laster 镜像创建容器,又说这个目录下的文件被8.0修改无法启动,感觉这个目录就这么废了,老的镜像无法启动,新的也无法启动。
所以自己被自己的行为蠢哭了千万别再直接用新本的镜像启动容器时挂接原本的mysql目录,有同事说这样没问题,但为啥我出问题了人设有问题吗
解决方法:
用老的mysql:laster镜像连接 /xxxx/xxx/mysqldata 的备份目录,备份太重要了
。启动一个mysql容器
用新的mysql:8.0.11 启动一个新的mysql 容器,挂接一个任意目录。然后通过navicat等其他工具将老的数据备份还原到新的mysql容器中。或者通过命令$ docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql
备份还原。
1、如果你的新本mysql还原成功了你用 navicate工具连接报如下的错
那么你需要修改mysql 的 my.cnf 文件:
添加:
default_authentication_plugin=mysql_native_password
因为8.0使用的是 caching_sha2_password
你可以进入容器:
docker exec -it mysql /bin/bash mysql -uroot -pxxxx use mysql select Host,User,plugin from mysql.user;
查看如下图
为啥非要修改caching_sha2_password 为 mysql_native_password ,我也不知道只是我的8.0.11的mysql容器启动后,程序接口任然无法正常使用报错:无法连接不支持的认证方法,这个时候可能需要升级程序接口的mysql驱动 ,但是懒得升,只能修改caching_sha2_password 为 mysql_native_password 结果就可以正常连接了。
그래서 나는 내 행동 때문에 울었습니다. 컨테이너를 시작하고 원래 mysql 디렉토리를 마운트하기 위해 새 이미지를 직접 사용하지 마십시오. 몇몇 동료들은 이것이 문제가 되지 않는다고 했지만 왜 그랬습니까? 문제가 있나요?
🎜해결책: 🎜🎜이전 mysql:laster 이미지를 사용하여 /xxxx/xxx/mysqldata의 백업 디렉터리에 연결합니다. . mysql 컨테이너 시작 🎜 새로운 mysql: 8.0.11을 사용하여 새로운 mysql 컨테이너를 시작하고 임의 디렉터리를 마운트하세요. 그런 다음 navicat과 같은 다른 도구를 통해 이전 데이터 백업을 새 mysql 컨테이너로 복원합니다. 또는 🎜$ docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases 명령을 통해 .sql
백업 및 복원. 🎜🎜1. 새 mysql이 성공적으로 복원되고 navicate 도구를 사용하여 연결하면 다음 오류가 보고됩니다🎜🎜🎜그런 다음 my.cnf 파일을 수정해야 합니다 mysql: 🎜추가됨: 🎜
重容器中拷贝文件到宿主机 不需要容器启动 docker cp 容器:/etc/mysql/my.cnf /home/xxx/my.cnf 将宿主机的文件拷贝容器里面的目录下 会覆盖老的文件 docker cp /home/xxx/my.cnf 容器:/etc/mysql/ 如果你特别牛逼程序中是用root来连接账号的那你可能还需要创建一个 ‘root’@'%' 的账号并修改它的权限可以远程访问,修改命令网上找
ca를 수정해야 하는 이유 ching_sha2_password 8.0.11 mysql 컨테이너가 시작된 후에도 여전히 프로그램 인터페이스를 정상적으로 사용할 수 없으며 오류가 보고됩니다. 현재 지원되지 않는 인증 방법입니다. 프로그램 인터페이스의 mysql 드라이버를 업그레이드해야 할 수도 있지만 업그레이드하기에는 너무 게을러서 caching_sha2_password를 mysql_native_password로 수정만 하면 정상적으로 접속이 가능합니다.
🎜🎜3. docker 명령을 기록하세요🎜rrreee위 내용은 Docker mysql 컨테이너를 mysql8로 업그레이드할 때 발생하는 문제 해결의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











이 기사는 MySQL의 Alter Table 문을 사용하여 열 추가/드롭 테이블/열 변경 및 열 데이터 유형 변경을 포함하여 테이블을 수정하는 것에 대해 설명합니다.

기사는 인증서 생성 및 확인을 포함하여 MySQL에 대한 SSL/TLS 암호화 구성에 대해 설명합니다. 주요 문제는 자체 서명 인증서의 보안 영향을 사용하는 것입니다. [문자 수 : 159]

기사는 MySQL에서 파티셔닝, 샤딩, 인덱싱 및 쿼리 최적화를 포함하여 대규모 데이터 세트를 처리하기위한 전략에 대해 설명합니다.

기사는 MySQL Workbench 및 Phpmyadmin과 같은 인기있는 MySQL GUI 도구에 대해 논의하여 초보자 및 고급 사용자를위한 기능과 적합성을 비교합니다. [159 자].

이 기사에서는 Drop Table 문을 사용하여 MySQL에서 테이블을 떨어 뜨리는 것에 대해 설명하여 예방 조치와 위험을 강조합니다. 백업 없이는 행동이 돌이킬 수 없으며 복구 방법 및 잠재적 생산 환경 위험을 상세하게합니다.

기사는 외국 열쇠를 사용하여 데이터베이스의 관계를 나타내고 모범 사례, 데이터 무결성 및 피할 수있는 일반적인 함정에 중점을 둡니다.

이 기사에서는 PostgreSQL, MySQL 및 MongoDB와 같은 다양한 데이터베이스에서 JSON 열에서 인덱스를 작성하여 쿼리 성능을 향상시킵니다. 특정 JSON 경로를 인덱싱하는 구문 및 이점을 설명하고 지원되는 데이터베이스 시스템을 나열합니다.

기사는 준비된 명령문, 입력 검증 및 강력한 암호 정책을 사용하여 SQL 주입 및 무차별 적 공격에 대한 MySQL 보안에 대해 논의합니다 (159 자)
