2017-05-08 12 views
9

現在私はISPConfig 3の最新バージョンを使用しています。今日はdbとユーザーを追加したいと思いました。それはうまくいかなかった。それから、PHPmyadminで試してみましたが、うまくいきませんでした。私は、次のエラーメッセージ受信phpMyAdminのユーザーパネルでユーザーを追加しようとしましたmysql.userのカラム数が間違っています。期待される42、見つかった44.テーブルが壊れている可能性があります

:あなたはあなたのSQL構文でエラーが発生している

を。右の構文を使用するため は、MySQLサーバのバージョンに対応していること取扱説明書を確認し 近く「* TO 『テスト』 @」行1

で「」localhostのVAR /ログ/ mysqlの/エラー/出力.log:

[ERROR] mysql.userのカラム数が間違っています。 5.5.55-0 + deb8u1 phpMyAdminのバージョン:4:4.2.12-2 + deb8u2

のDebian Linuxの8

テーブルはおそらく

MySQLバージョンを破損している見つけ、42を予想

+1

質問を編集し、試したSQLクエリを含めてください。 –

+0

私はphpmyadminのユーザタブに行き、そこにユーザを追加したかったのです。 – Ser1ous1

+0

2番目のエラーは、ユーザーテーブルのバージョンがMySQLサーバーのバージョンと同期していないことを示します。それはできるだけ早く確認する必要があります。 MySQLはこのような状況でも起動してはいけません。 – Shadow

答えて

0

静かな同じエラーメッセージ:mysql.userの列数が間違っています。 42が必要ですが、43が見つかりました。テーブルが破損している可能性があります。
これは解決策ではなく、回避策です...私はmysql 5.5.55-0 + deb8u1からすべてのデータベースをバックアップし、このバグが解決されない限りmysql 5.7.18-0ubuntu0.16.04.1に復元しました。 ハードジョブはすべての接続を更新するのに便利です。

2

今日私はDebian Jessie 8ステージングボックスのdist-upgradeを実行した後も同じ問題に遭遇しました。私が調べたいくつかの調査の後、mysqlのテーブル構造はmysql-5.5.55が探しているものとは異なっていることがわかりました。私はちょうど壊れたmysqlデータベースを新しくインストールされたデータベースと比較し、小さなパッチファイルを作成しました。これはエラーを修正するはずです。これが他の条件でも機能するかどうかは不明です。したがって、このパッチを使用し、/ var/lib/mysqlと/ etc/mysqlをバックアップして厄介なことをする前に注意してください;)このパッチによって発生する可能性のあるいかなる損害に対しても責任を負いません。あなたの責任においてそれを使用してください。

まずはメイクバック!さらに多くのバックアップ!例えばmysqlsafebackupに、私が書いた暗号化と圧縮のバックアップソリューションを試してみてください(https://github.com/VerboteneZone/MySQLSafeBackup参照)。

あなたのボックスに次のパッチをダウンロードします。

# wget https://download.rent-an.expert/mysql-patch-5.5.55.sql.gz 

(apache2のは、Postfixまたは任意の通常のMySQLサーバがアクセスなどのサービスを停止)インスタンスが現在お使いのMySQLサーバにアクセスしていないことを、確認してください。あなた自身が確かめた場合、あなたは暗闇の中で一人でいることを、パッチを適用し、以下のコマンドでMySQLのアップグレードを強制:

# zcat mysql-patch-5.5.55.sql.gz | mysql -uroot -p mysql 
# mysql_upgrade --force -uroot -p 

何がエラーなしで働いていた場合は、お使いのMySQLサービスを再起動します。

# service mysql stop 
# service mysql start 

# mysql -uroot -p 

CREATE USERを「T:パッチが正しく適用された場合

その後、見にTESTUSERを作成しようestuser123 '@' localhost 'IDENTIFIED BY' Pass0worZ ';

クエリOK、0行影響を受けた(0.00秒)、あなたが安全に、もう一度あなたのTESTUSERを削除することができます:あなたが好きなメッセージを取得する必要があります

DROP USER 'Testuser123' @ 'localhost';

何かが間違っていた場合はとにかく、あなたのバックアップを復元して、やり直してください。)

お役に立てば幸いです。

+0

あなたが書いたパッチへのリンクを投稿するのではなく、最初にパッチの内容を説明していますが、あなたが見つけたMySQLバージョンの違いは何ですか?あなたのパッチは他の人のMySQL資格情報を他の人に送りますか? – Heitor

1

私は今日同じ問題に遭遇しました。 解決策は、不足している列を手動でユーザーテーブルに追加することでした。

用心 - mysql.5.5.55で新しく追加された列がある

ご自身の責任で使用してください:

use mysql; 
alter Table user ADD Create_tablespace_priv enum('N','Y') DEFAULT 'N' NOT NULL AFTER Trigger_priv; 
alter Table user ADD plugin char(64) DEFAULT ''; 
alter Table user ADD authentication_string text DEFAULT NULL; 

plugin, authentication_string, Create_tablespace_priv 

は、彼らが特定のオーデルに追加する必要があります

この後、もう一度userテーブルを変更できました。

4

デビアン(jessie)と別のami Linuxボックスで同じ問題が発生しました。 mysqlユーザテーブルからパスワードの期限切れカラムを削除すると、私の問題が解決しました。

mysql> alter table mysql.user drop column password_expired; 
+0

私はis_roleでした – h0mayun

4
私の場合は

、およびエラーメッセージの推奨に従って、私は走った:すべてを解決

[email protected]:/# mysql_upgrade -uroot -p*** 
Checking if update is needed. 
Checking server version. 
Running queries to upgrade MySQL server. 
Checking system database. 
mysql.columns_priv         OK 
mysql.db           OK 
mysql.engine_cost         OK 
mysql.event          OK 
mysql.func           OK 
mysql.general_log         OK 
mysql.user           OK 
Upgrading the sys schema. 
Checking databases. 
[...] 
Upgrade process completed successfully. 
Checking if update is needed. 

+0

私のために働いた!ありがとう – mahatmanich

24

Debian 8(jessie)でmysqlサーバを5.5から5.7にアップデートしたときと同じ問題がありました。ごくまれに、バージョンのシーケンスをバイパスして直接更新すると発生します。 (これは多くの人が行いますが、そのような更新は公式にサポートされていません)。

mysql_upgrade --force -uroot -p 

私はこれは私がcentos 7 x 64myriadbdata directoryを変更することができませんでしたので、私はmariadbからmysqlに移動し、あなたに

1

を助けることを願っています:私は、次のコマンドを実行したとき は、私の場合、それがうまく働きました。

オンmysql私はroot以外の新しいユーザーを追加しようとしました。私は

mysql_upgrade -uroot -p 

mysql_upgrade --force -uroot -p 

を試してみましたが、それでも同じエラーを得た

column count of mysql.user is wrong expected 45 found 48 

を得ました。 だから私はをmysql.userテーブルに追加し、rootのユーザ名を持つ他の行からすべての詳細をコピーしました。

restart service mysqld 

としました。

0

私はユーザーが

ERRORを編集または追加しようとした場合にのみ、エラーが発生しました(フルmysqldumpをして、sourceコマンドを使用して)は、MySQL 5.5から5.7に移行する場合1805(HY000):mysql.userのカラム数が間違っています。予想される45、 は42テーブルはおそらく

ここにいくつかの他の人と同様に

を破損していることがログにsudo

を書くことができますので、私は

sudoのmysql_upgradeコマンド-uルート-p #sudoをやりました

サービスmysqlの再起動

そして、問題を修正して、ユーザーを再度追加して編集することができました。私はこの小さな違いを同様の回答にコメントとして追加していますが、評判はまだありません

関連する問題