web-dev-qa-db-ja.com

Ubuntu 16.04でMySQL 5.7.15へのアップグレードがクラッシュする

昨夜、Ubuntu OSをアップグレードしようとしましたが、MySQL 5.7.15は変更の1つでした。 mysqlは正常に動作しているため、アップグレードは成功したようですが、インストールプロセスはこのメッセージで動作を停止しました。

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

インストールプロセスを定期的にキャンセルすることはできず、強制終了するだけです。そのため、何らかの問題が発生する可能性があり、他のすべてのインストール(将来)で再度実行しようとします。

このアップグレードを防止または解決するにはどうすればよいですか?

12
Omid

この解決策は私の問題を解決しました:

  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
    

    Synaptic の使用を推奨します。

  4. これらのフォルダーを作成します。

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

    mysqlのセットアップでは自動的に行われず、その理由はわかりません。

  5. MySQLを再度インストールします

    Sudo apt install mysql-server
    

    私は代わりにPHP開発用の他の依存関係をインストールするためにSudo apt install lamp-server^を使用しました。

  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 
    
11
Omid

私はすべてをパージすることなくこれを修正できました。問題は、sysスキーマデータベースが作成されていないことであるため、ここに解決策があります。

  1. クローン https://github.com/mysql/mysql-sys を作成し、クローンされたフォルダーにcdします。
  2. ターミナルで、mysql -u root -p <./sys_57.sql(またはバージョンに応じてsys_56.sql)を実行します

再びmysql_upgradeをお楽しみください。これはおそらく、アップグレードスクリプトの混乱であったと思います。

4
Asefa Tasew

私もこの問題を抱えていました。 apt getを開始してインストールするたびに、DBの更新後または更新中にプロセスがハングしました。ここにある他のソリューションはどれもうまくいきませんでした。

最後に私はパージした

Sudo apt purge mysql-server mysql-server-5.7

そして、mysql here の指示から手動でインストールしました

次に、データディレクトリを古いデータで上書きしました

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

そして最終的にこのようなsystemdサービスを追加しました

/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はシステムアップデートを壊していませんでした

もちろん、欠点は、今後手動で更新する必要があることです。

2
Jeremy French

Root @localhostアカウントにパスワードがない場合、 here のようにポストインストールプロセスにバグがあります(特にスレッドの最後のコメントを参照)

  • TMP*のすべての/var/lib/mysql-filesファイルを削除します
  • ファイル/var/lib/dpkg/info/mysql-server-5.7.postinstを編集し、370行目を(#を使用して)コメントします。

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

  • 再実行Sudo dpkg --configure -a

0
Gab