CentOS の MySQL がサービスを開始できない

CentOS の MySQL がサービスを開始できない

サーバーを再起動した後、mysql を起動できません:

$ sudo service mysql start $ Starting MySQL. ERROR! Manager of pid-file quit without updating file.

「/var/log/mysqld.log」には次のように表示されます: 150225 21:39:49 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql 150225 21:39:49 [Note] Plugin 'FEDERATED' is disabled. /usr/local/mysql/bin/mysqld: Table 'mysql.plugin' doesn't exist 150225 21:39:49 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it. 150225 21:39:49 InnoDB: Initializing buffer pool, size = 8.0M 150225 21:39:49 InnoDB: Completed initialization of buffer pool InnoDB: Log scan progressed past the checkpoint lsn 0 37356 150225 21:39:49 InnoDB: Database was not shut down normally! InnoDB: Starting crash recovery. InnoDB: Reading tablespace information from the .ibd files... InnoDB: Restoring possible half-written data pages from the doublewrite InnoDB: buffer... InnoDB: Doing recovery: scanned up to log sequence number 0 44233 150225 21:39:49 InnoDB: Starting an apply batch of log records to the database... InnoDB: Progress in percents: 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 InnoDB: Apply batch completed 150225 21:39:49 InnoDB: Started; log sequence number 0 44233 150225 21:39:49 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist 150225 21:39:49 mysqld_safe mysqld from pid file /var/lib/mysql/iZ23aa67ovhZ.pid ended ハード ドライブはいっぱいではありません。

/var/lib/mysql のステータスは次のとおりです。 drwxrwxrwx 2 mysql root 4096 Feb 26 16:43 . drwxr-xr-x. 21 root root 4096 Feb 25 19:38 .. -rw-rw---- 1 mysql mysql 10485760 Feb 25 19:38 ibdata1 -rw-rw---- 1 mysql mysql 5242880 Feb 26 16:43 ib_logfile0 -rw-rw---- 1 mysql mysql 5242880 Feb 25 19:38 ib_logfile1 /etc/my.cnf は次のとおりです。 [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid サーバーに mysql_install_db はありません。 bash: mysql_install_db: command not found mysql_safe を実行すると、次のように表示されます。 150226 16:58:50 mysqld_safe Logging to '/var/log/mysqld.log'. 150226 16:58:50 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql 150226 16:58:50 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

どうもありがとう!

答え1

150225 21:39:49 [エラー] 致命的なエラー: 権限テーブルを開いてロックできません: テーブル 'mysql.host' が存在しません

この問題を解決するには、デフォルトのインストールが移動されるのではなく、mysql にどこを検索するかを伝えるだけです。次のように実行できます。

mysql_install_db –user=mysql –ldata=/newlocation

それをしたら、mysqlを再起動できます。

/etc/init.d/mysqld restart

役に立たない場合:

  1. アンインストールしたmysqlを使用してyum remove mysql*
  2. 再帰的に削除され/usr/bin/mysql/var/lib/mysql
  3. ファイルも削除しました/etc/my.cnf.rmp
  4. ps -emysql がまだ実行されていないことを確認するためにプロセスをチェックするために使用されます。
  5. サーバーを再起動しましたreboot
  6. 実行しましたyum install mysql-server。これにより、依存関係として mysql クライアントもインストールされるようです。
  7. mysqlに所有権とグループ権限を与えchown -R mysql /var/lib/mysqlchgrp -R mysql /var/lib/mysql
  8. service mysqld startMySQL デーモンを起動するために使用されます。

150225 21:39:49 InnoDB: データベースが正常にシャットダウンされませんでした。InnoDB: クラッシュ リカバリを開始しています。InnoDB: .ibd ファイルからテーブルスペース情報を読み取っています... InnoDB: 二重書き込みから半分書き込まれた可能性のあるデータ ページを復元しています InnoDB: バッファー...

これはクラッシュ後の通常の出力です。InnoDB はこのような場合に自動的に回復するように設計されていますが、時間がかかる場合があります。通常は数分ですが、メモリ内に数千ページの変更されたデータがあり、ディスクが遅い場合にクラッシュが発生した場合は、数時間かかる可能性があります。

InnoDB はほとんどの場合、データ損失なしで自動的に回復できます。

リカバリを開始するには、まず、/etc/my.cnf 内の 'innodb_force_recovery' ディレクティブを使用する必要があります。これについて詳しくない場合は、次のドキュメントをお読みください。強制的な innodb リカバリ. ご存知の方はお進みください。

場合によっては、InnoDB の損傷が中程度で、自己修復できることがあります。/etc/my.cnf の [mysqld] セクションの新しい行に「innodb_force_recovery = #」を追加します。# は、必要な回復の規模に置き換えてください。マグニチュード 4 を超えるものを使用しようとすると、さらに破損するリスクが極めて高くなり、時間と労力が無駄になってしまいます。この例では、自己修復を試みているため、1 または 2 のみを使用します。新しい行を追加したら、MySQL サーバーを再起動し、ログ (/var/lib/mysql/server.hostname.com.err) をチェックして、インスタンスが正常に自己修復されたかどうかを確認します。

関連情報