MySQL(Percona 5.6)は起動しません。
このエラーは私に何度か起こりました。毎回、MySQLデータディレクトリを削除してMySQLを再インストールする必要がありました。
MySQLを修正する別の方法はありますか? (具体的には、データが吹き飛ばされていないものですか?)
/ var/log/mysql/error.log
150214 16:36:39 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
2015-02-14 16:36:40 0 [Warning] Using unique option prefix key_buffer instead of key_buffer_size is deprecated and will be removed in a future release. Please use the full name instead.
2015-02-14 16:36:40 0 [Warning] 'THREAD_CONCURRENCY' is deprecated and will be removed in a future release.
2015-02-14 16:36:40 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2015-02-14 16:36:40 1018 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.
2015-02-14 16:36:40 1018 [Note] Plugin 'FEDERATED' is disabled.
/usr/sbin/mysqld: Incorrect file format 'plugin'
2015-02-14 16:36:40 1018 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
2015-02-14 16:36:40 1018 [Note] InnoDB: Using atomics to ref count buffer pool pages
2015-02-14 16:36:40 1018 [Note] InnoDB: The InnoDB memory heap is disabled
2015-02-14 16:36:40 1018 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2015-02-14 16:36:40 1018 [Note] InnoDB: Memory barrier is not used
2015-02-14 16:36:40 1018 [Note] InnoDB: Compressed tables use zlib 1.2.8
2015-02-14 16:36:40 1018 [Note] InnoDB: Using Linux native AIO
2015-02-14 16:36:40 1018 [Note] InnoDB: Using CPU crc32 instructions
2015-02-14 16:36:40 1018 [Note] InnoDB: Initializing buffer pool, size = 256.0M
2015-02-14 16:36:40 1018 [Note] InnoDB: Completed initialization of buffer pool
2015-02-14 16:36:40 1018 [Note] InnoDB: Highest supported file format is Barracuda.
2015-02-14 16:36:40 1018 [Note] InnoDB: The log sequence numbers 714340126 and 714340126 in ibdata files do not match the log sequence number 716513090 in the ib_logfiles!
2015-02-14 16:36:40 1018 [Note] InnoDB: Database was not shutdown normally!
2015-02-14 16:36:40 1018 [Note] InnoDB: Starting crash recovery.
2015-02-14 16:36:40 1018 [Note] InnoDB: Reading tablespace information from the .ibd files...
2015-02-14 16:36:40 1018 [Note] InnoDB: Restoring possible half-written data pages
2015-02-14 16:36:40 1018 [Note] InnoDB: from the doublewrite buffer...
InnoDB: Last MySQL binlog file position 0 292596, file name binlog.000056
2015-02-14 16:36:40 1018 [Note] InnoDB: 128 rollback segment(s) are active.
2015-02-14 16:36:40 1018 [Note] InnoDB: Waiting for purge to start
2015-02-14 16:36:40 1018 [Note] InnoDB: Percona XtraDB (http://www.percona.com) 5.6.21-70.1 started; log sequence number 716513090
2015-02-14 16:36:40 1018 [Note] Recovering after a crash using binlog
2015-02-14 16:36:40 1018 [Note] Starting crash recovery...
2015-02-14 16:36:40 1018 [Note] Crash recovery finished.
2015-02-14 16:36:40 1018 [Note] RSA private key file not found: /var/lib/mysql//private_key.pem. Some authentication plugins will not work.
2015-02-14 16:36:40 1018 [Note] RSA public key file not found: /var/lib/mysql//public_key.pem. Some authentication plugins will not work.
2015-02-14 16:36:40 1018 [Note] Server hostname (bind-address): '*'; port: 3306
2015-02-14 16:36:40 1018 [Note] IPv6 is available.
2015-02-14 16:36:40 1018 [Note] - '::' resolves to '::';
2015-02-14 16:36:40 1018 [Note] Server socket created on IP: '::'.
2015-02-14 16:36:40 1018 [ERROR] Fatal error: Can't open and lock privilege tables: Incorrect file format 'user'
150214 16:36:40 mysqld_safe mysqld from pid file /tmp/mysqld.pid ended
私はなんとかしてこの問題を解決しました Ruby.bからの回答
ホストテーブルを修復する必要があります。これを行うには、次のコマンドを発行して、特権システムをバイパスしてサーバーを起動します。
1つのターミナルで、
$ Sudo mysqld --skip-grant-tables
別のターミナルを開き、これらのコマンドを実行します
$ mysql
mysql> use mysql
mysql> repair table Host use_frm;
mysql> exit
そして、mysqlサービスを再起動します
$ Sudo service mysql restart
私を正しい方向に導いてくれたジョンのおかげで、私は自分のシステムを飛び越えるために他のいくつかのフープを持っていました。これが誰かを助けることを願っています。
これは破損した特権テーブルです。アップグレードまたは電源障害が原因である可能性があります。私のシステムOpenSUSE13.2、MySQL5.6。単純な再インストールでは修正されません。再インストールする前にMySQLのすべてのトレースを削除する必要がありますまたは…
MySQLのすべてのインスタンスを閉じます
$ systemctl stop mysql.service
$ pkill -9 mysqld
特権システムをバイパスするサーバーを起動します
$ Sudo mysqld_safe --user=root --skip-grant-tables
MySQLコマンドラインツールを起動します
$ mysql
あなたが受け取る場合
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
mysqld_safeは、ソケットを別の場所で実行しています。で見つけてください。
$ Sudo find / -type s
私は/ var/run/mysql /にありました。my.cnfのソケット行を編集して、既存のソケット設定をメモします。私のラインは
socket=/var/run/mysql/mysql.sock
「MySQLのすべてのインスタンスを閉じる」(これらの手順の先頭)に戻ります。それらに従って、「MySQLコマンドラインツールの起動」を実行します。うまくいけば、mysqlを正常に開くことができます。 mysqlコマンドラインから。
mysql> use mysql
mysql> repair table user use_frm;
mysql> exit
MySQLのすべてのインスタンスを閉じます
$ systemctl stop mysql.service
$ pkill -9 mysqld
My.cnfを再編集し、ソケットラインを元の設定に戻します。
Mysqlデータディレクトリ内の2つのファイルのアクセス許可をリセットする必要がありました。
$ chown mysql:mysql server2.err
$ chown mysql:mysql server2.pid
MySQLサーバーを起動します
$ systemctl start mysql.service
次に、別のテーブル(db)で同じ元のエラーが発生しました
[ERROR] Fatal error: Can't open and lock privilege tables: Incorrect file format 'db'
そして、すべての特権テーブルが修正されるまで、「repair」コマンドを変更して上記の手順を複数回繰り返す必要がありました。
mysql> repair table db use_frm;
@ John Linhartを実行している場合の回答の設定は、次のとおりですDocker:
まず、mysql
-container(DBの作成に使用したものと同じ)から適切なタグを使用して、新しいDockerコンテナーを開始します。
$ docker run --rm -it -v <named_volume>:/var/lib/mysql mysql:<tag> /bin/bash
これにより、正しい名前のボリューム(またはマウントされたボリューム)がコンテナーにマウントされた新しいコンテナーが起動され、rootとしてシェルにドロップされます。ただし、mysqld
-デーモンはrootとしての起動を拒否するため、mysql
-userとして実行します。
$ whoami
root
$ which mysqld
/usr/sbin/mysqld
$ su mysql
$ whoami
mysql
$ /usr/sbin/mysqld --skip-grant-tables
....
SQLコマンドを実行するために、新しいターミナルから実行中のコンテナーに接続します。
$ docker ps
CONTAINER ID [...]
abc123 [...]
$ docker exec -it abc123 /bin/bash
# We're on the container now!
$ whoami
root
$ mysql
...
そしてそこから続けます。完了したら、exit
を介してコンテナを2番目のターミナルに残します。 mysqld
を実行しているターミナルはCMD + Cに応答しないため、Dockerを介してコンテナーを停止します。
$ docker ps
CONTAINER ID [...]
abc123 [...]
$ docker stop abc123