プレーンな CentOS 6.x サーバーで MySQL ユーザーに権限を付与しようとしているときに、mysql コンソールで次のエラーを受け取りました:MySQL エラー テーブル 'mysql.servers' が存在しません
びっくりしました…最初に頭に浮かんだのは「mysqlデータベースが壊れた」ということでした。実際、それが問題でした。 mysql.user テーブルは、通常の MySQL インストールに確実に存在するはずなので、MySQL インストールで何かがおかしくなっています。
MySQL エラー テーブル「mysql.servers」が存在しないエラーの修正
mysql.user が存在するかどうかを確認してください
use mysql; select * from user;
この問題を解決するために私が最初に試みたのは、mysql データベースを再インストールして、特権なしで MYSQL を開始するすべての mysql デフォルト テーブルを再作成することでした:
/usr/bin/mysql --skip-grant-tables & mysql -u root
次に、Linux ターミナルからルートとしてこれを実行してみました:
mysql_install_db
その後、以前の MySQL プロセスを強制終了し、MYSQL を正常に再起動しました:
ps -aux | grep mysql
そして、すべてのプロセスを -9 で終了します。
service mysqld restart
それでも問題が解決しない場合は、MySQL データ ディレクトリのアクセス許可を確認してください。何らかの理由で変更されている可能性があります。
最後のオプション:すべてのデータベースの完全な mysql ダンプを作成する 、mysql を完全に削除し、最初から再インストールしてください。
すべてのデータベースのバックアップを作成:
MYSQLPASS=putyourmysqlrootpasshere for i in $(mysql -u root -p$MYSQLPASS -Bse 'show databases'); do mysqldump --opt -p$MYSQLPASS $i -c> /root/mysql-dump-$i.sql; done
バックアップが正常かどうかを確認してください:
ls -alh /root/mysql-dump*
MySQL サーバーを削除
yum remove mysql-server rm /var/lib/mysql -rf
MYSQL サーバーを再インストール
yum install mysql-server service mysql start
特権および mysql ユーザーと同様に、すべてのデータベースを手動で作成し、.sql バックアップを各データベースにダンプします。
結論
ご覧のとおり、これに対して私が見つけた唯一の解決策は、mysql を完全に削除して、最初から再インストールすることでした。しかし…MySQLエラーテーブル「mysql.servers」が存在しないエラーの他の修正を知っていますか?
さらに読む:
- MySQL でテーブルが見つかりません