Ubuntu 16.04에서 MySQL 5.7.15로 업그레이드하면 충돌이 발생합니다


13

어젯밤에 우분투 OS를 업그레이드하려고했는데 MySQL 5.7.15가 그 중 하나였습니다. mysql이 제대로 작동하기 때문에 업그레이드에 성공한 것 같지만 설치 프로세스가이 메시지와 함께 작동을 멈췄습니다.

This installation of MySQL is already upgraded to 5.7.15, 
use --force if you still need to run mysql_upgrade

설치 절차를 정식으로 취소 할 수 없으며 그냥 죽여야합니다. 따라서 문제가 발생할 수 있으며 다른 모든 설치 (향후)에 다시 시도합니다.

이 업그레이드를 방지하거나 해결하는 방법은 무엇입니까?

답변:


12

이 솔루션은 내 문제를 해결했습니다.

  1. 권한으로 데이터베이스 파일을 백업하십시오.

    sudo cp -avt /your/backup/directory /var/lib/mysql /etc/mysql/my.cnf
    
  2. MySQL 파일을 삭제하십시오.

    sudo rm -rv /etc/mysql 
    
  3. 다음을 실행하여 MySQL을 완전히 제거하십시오.

    sudo apt purge mysql-server mysql-server-5.7 mysql-server-core-5.7 mysql-client-5.7 mysql-client-core-5.7
    

    시냅틱을 사용하는 것이 좋습니다.

  4. 다음 폴더를 작성하십시오.

    sudo mkdir -p /etc/mysql/conf.d
    

    mysql 설정이 자동으로 수행되지 않아 이유를 모르겠습니다.

  5. MySQL을 다시 설치하십시오

    sudo apt install mysql-server
    

    내가 사용하는 sudo apt install lamp-server^PHP 개발을위한 다른 종속성을 설치하는 대신.

  6. MySQL 중지 :

    sudo service mysql stop 
    
  7. 데이터베이스 및 파일을 복원하십시오.

    sudo cp -a /your/backup/directory/mysql /var/lib   
    sudo cp /your/backup/directory/my.cnf /etc/mysql 
    
  8. MySQL을 다시 시작하십시오.

    sudo service mysql start 
    

1
dpkg : 정리 중 오류 : 하위 프로세스 설치 후 설치 스크립트에서 오류 종료 상태 1을 반환했습니다. 처리 중 오류가 발생했습니다. mysql-server-5.7
Stevie G

중요한 것은 sudo rm /var/cache/debconf/config.dat, sudo rm /var/cache/debconf/passwords.dat및을 제거하는 것입니다 sudo rm /var/cache/debconf/templates.dat. 그런 다음 모든 것을 제거하십시오. 그런 다음 시스템을 재부팅하십시오.
Stevie G

나는 같은 문제가 있었고이 절차로 해결했습니다. MySQL을 삭제 한 후 시스템을 재부팅하는 것이 좋습니다. 이는 Stevie가보고 한 문제를 방지하는 것으로 보입니다.
Tsutomu

4

모든 것을 제거하지 않고도이 문제를 해결할 수있었습니다. 문제는 sys 스키마 데이터베이스가 생성되지 않은 것이므로 해결책은 다음과 같습니다.

  1. https://github.com/mysql/mysql-sys 복제 및 복제 된 폴더에 CD를 넣습니다.
  2. 터미널에서 mysql -u root -p <./sys_57.sql (또는 버전에 따라 sys_56.sql)을 실행하십시오.

mysql_upgrade가 다시 작동하는 것을 즐기십시오. 아마도 이것이 업그레이드 스크립트 엉망인 것 같습니다.


예, 데이터베이스 업그레이드와 관련된 문제입니다. 불행히도 더 이상 솔루션이 작동하는지 여부를 테스트 할 수 없습니다.
Omid

"당신은 여전히 실행으로 mysql_fix_privilege_tables해야하는 경우의 MySQL이 설치가 이미 5.7.22로 업그레이드를 사용 --force"그것은 마법처럼 일 나는이보고되었다 내 MySQL은 5.7.22 설치에 대한 솔루션을 시도
헨릭

2

나는이 문제도 가지고 있었다. apt get and install을 시작할 때마다 DB 업데이트 후 또는 DB 업데이트 중에 프로세스가 중단됩니다. 다른 솔루션은 여기에서 작동하지 않았습니다.

결국 나는 정화했다

sudo apt purge mysql-server mysql-server-5.7

그리고 여기 mysql에 대한 지침에서 수동 설치를 따르 십시오.

그런 다음 이전 데이터로 데이터 디렉토리를 덮어 썼습니다.

sudo cp -Rfv /var/lib/mysql /usr/local/mysql/data

마지막으로 이와 같은 시스템 서비스를 추가했습니다.

/lib/systemd/system/mysql.service

[Unit]
Description=MySQL Server
After=syslog.target
After=network.target

[Service]
Type=simple
PermissionsStartOnly=true
ExecStartPre=/bin/mkdir -p /var/run/mysqld
ExecStartPre=/bin/chown mysql:mysql -R /var/run/mysqld
ExecStart=/usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/lib/mysql/plugin --log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306
TimeoutSec=300
PrivateTmp=true
User=mysql
Group=mysql
WorkingDirectory=/usr

[Install]
WantedBy=multi-user.target

그런 다음 달렸다

# systemctl daemon-reload
# systemctl enable mysql
# systemctl start mysql

그런 다음 모든 것이 이전과 같이 작동하는 것처럼 보였고 mysql은 시스템 업데이트를 중단하지 않았습니다.

물론 단점은 나중에 수동 업데이트를 수행해야한다는 것입니다.


1

root @ localhost계정에 비밀번호가없는 경우 여기에 설명 된대로 설치 후 프로세스에 버그가 있습니다 (특히 스레드의 마지막 주석 참조)

  • 모든 TMP*파일을 제거/var/lib/mysql-files
  • 파일을 편집하고 /var/lib/dpkg/info/mysql-server-5.7.postinst370 행을 주석으로 처리하십시오 (# 사용).

    echo "ALTER USER 'root'@'localhost' IDENTIFIED WITH 'auth_socket';" >> "$initfile"

  • 다시 뛰어 sudo dpkg --configure -a


어머나! 후세를위한 페이지 참고 : <3 당신은 내 생명을 구 사용 (같은 방법으로 실패합니다) 더 MySQL의 업데이트를 방지 할 수 있습니다apt-mark hold mysql-server-5.7
갑 - 모니카를 통해 왼쪽
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.