데이터 베이스 MySQL 튜토리얼 Docker mysql 컨테이너를 mysql8로 업그레이드할 때 발생하는 문제 해결

Docker mysql 컨테이너를 mysql8로 업그레이드할 때 발생하는 문제 해결

Dec 23, 2020 am 09:30 AM
mysql8

mysql 동영상 튜토리얼 칼럼에서는 Docker mysql 컨테이너를 mysql8로 업그레이드할 때 발생하는 문제를 소개하고 이를 효과적으로 해결하는 방법을 알려줍니다.

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工具连接报如下的错

Docker mysql 컨테이너를 mysql8로 업그레이드할 때 발생하는 문제 해결

那么你需要修改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;
로그인 후 복사

查看如下图

Docker mysql 컨테이너를 mysql8로 업그레이드할 때 발생하는 문제 해결

为啥非要修改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 도구를 사용하여 연결하면 다음 오류가 보고됩니다🎜

Docker mysql 컨테이너를 mysql8로 업그레이드할 때 발생하는 문제 해결🎜🎜그런 다음 my.cnf 파일을 수정해야 합니다 mysql: 🎜추가됨: 🎜

重容器中拷贝文件到宿主机 不需要容器启动
docker cp 容器:/etc/mysql/my.cnf  /home/xxx/my.cnf 

将宿主机的文件拷贝容器里面的目录下 会覆盖老的文件
docker cp /home/xxx/my.cnf   容器:/etc/mysql/
如果你特别牛逼程序中是用root来连接账号的那你可能还需要创建一个 ‘root’@'%' 的账号并修改它的权限可以远程访问,修改命令网上找
로그인 후 복사
🎜 8.0부터 사용됩니다. 하나는 caching_sha2_password입니다🎜컨테이너에 들어갈 수 있습니다: 🎜rrreee🎜아래 그림을 보세요🎜🎜 .png" alt="Docker mysql 컨테이너를 mysql8로 업그레이드할 때 발생하는 문제 해결"/>🎜🎜ca를 수정해야 하는 이유 ching_sha2_password 8.0.11 mysql 컨테이너가 시작된 후에도 여전히 프로그램 인터페이스를 정상적으로 사용할 수 없으며 오류가 보고됩니다. 현재 지원되지 않는 인증 방법입니다. 프로그램 인터페이스의 mysql 드라이버를 업그레이드해야 할 수도 있지만 업그레이드하기에는 너무 게을러서 caching_sha2_password를 mysql_native_password로 수정만 하면 정상적으로 접속이 가능합니다. 🎜🎜3. docker 명령을 기록하세요🎜rrreee

위 내용은 Docker mysql 컨테이너를 mysql8로 업그레이드할 때 발생하는 문제 해결의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

Alter Table 문을 사용하여 MySQL에서 테이블을 어떻게 변경합니까? Alter Table 문을 사용하여 MySQL에서 테이블을 어떻게 변경합니까? Mar 19, 2025 pm 03:51 PM

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

MySQL 연결에 대한 SSL/TLS 암호화를 어떻게 구성합니까? MySQL 연결에 대한 SSL/TLS 암호화를 어떻게 구성합니까? Mar 18, 2025 pm 12:01 PM

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

MySQL에서 큰 데이터 세트를 어떻게 처리합니까? MySQL에서 큰 데이터 세트를 어떻게 처리합니까? Mar 21, 2025 pm 12:15 PM

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

인기있는 MySQL GUI 도구는 무엇입니까 (예 : MySQL Workbench, Phpmyadmin)? 인기있는 MySQL GUI 도구는 무엇입니까 (예 : MySQL Workbench, Phpmyadmin)? Mar 21, 2025 pm 06:28 PM

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

드롭 테이블 문을 사용하여 MySQL에서 테이블을 어떻게 드롭합니까? 드롭 테이블 문을 사용하여 MySQL에서 테이블을 어떻게 드롭합니까? Mar 19, 2025 pm 03:52 PM

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

외국 키를 사용하여 관계를 어떻게 표현합니까? 외국 키를 사용하여 관계를 어떻게 표현합니까? Mar 19, 2025 pm 03:48 PM

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

JSON 열에서 인덱스를 어떻게 생성합니까? JSON 열에서 인덱스를 어떻게 생성합니까? Mar 21, 2025 pm 12:13 PM

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

일반적인 취약점 (SQL 주입, 무차별 적 공격)에 대해 MySQL을 어떻게 보호합니까? 일반적인 취약점 (SQL 주입, 무차별 적 공격)에 대해 MySQL을 어떻게 보호합니까? Mar 18, 2025 pm 12:00 PM

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

See all articles