この投稿の指示 に従って、Ubuntu 16.04の既存の5.7インストールの上にMySQL 5.6をインストールする方法について、サービスの開始に複数の問題がありました。
最初にこれが起こりました:
Failed to start mysql.service: Unit mysql.service is masked
systemctl unmask mysql.service
を実行することで解決しました。しかし、その後、私は繰り返しこのメッセージを受け取りました:
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
systemctl status mysql.service
の検査は以下を示しました。
Failed to start LSB: Start and stop the mysql database server daemon.
MySQLバージョンをダウングレードした後、次のコマンドを試してみます。
systemctl unmask mysql.service
service mysql start
これに対する修正には、異なるデバッグログを含む複数の手順が含まれており、それらのログの手がかりをたどっていました。他の人を助けるためにそれらを文書化しています-あなたの問題は異なるかもしれませんが、このプロセスは何が間違っているのかを見つけるのに役立つはずです:
まず、journalctl -xe
にはさらに多くの情報が含まれています。私の場合、次のものが含まれていました。
kernel: audit: type=1400 audit(1528794958.103:169): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/etc/mysql/my.cnf.fallback"
これはvi /etc/apparmor.d/usr.sbin.mysqld
と次の行を追加することで修正できます。
/etc/mysql/conf.d/mysql.cnf/ r,
/etc/mysql/conf.d/mysql.cnf/* r,
/etc/mysql/my.cnf.fallback r,
興味深い点は、ディレクトリとその中のワイルドカードファイル用に別の行が必要なことです。これは一部のUNIXアプリケーションでは一般的ですが、すべてが失敗するわけではありません。
すべてのapparmorの変更が完了すると、システムはまだ起動しなくなり、今回はjournalctl -xe
コマンドは何の役にも立ちませんでした。
その後、Sudo -u mysql mysqld
を実行して、デーモンを手動で開始することができました。これは、InnoDBの起動に失敗したことを示していますが、理由ではありません。
気まぐれに、ファイル/var/lib/mysql/ib_logfile*
およびib_binlog
を削除して、もう一度試しました。今回はサーバーが起動しました。その後、これを終了して、service start mysql
を実行することができました。
別に/var/lib/mysql/debian-5.7.flag
を削除しました-これが役立ったのか、そうしなかった場合にその後の問題を引き起こしたのかわかりません。
この例が誰かの助けになることを願っています。このプロセスで別の問題が発生した場合は、同様の行に沿って他の回答を自由に追加してください。
Mysqlが実行されている場合は、まず停止します
BACKUP=/var/tmp/broken-mysql
Sudo mkdir -p $BACKUP # create backup dir
Sudo mv -vi /var/lib/mysql* $BACKUP # Remove any old database setup
Sudo mysql_install_db -u mysql # Install new database
Sudo systemctl unmask mysql.service # Enables the service for systemd
Sudo service mysql start # Start the service