0

mysql ユーザー権限を変更しましたが、不可解な理由により、mysql インストール データベースを除くすべてのデータベースを表示できなくなりました。これらの DB が表示されない理由がよくわかりません。パーミッションが台無しになった可能性がある場所を探すためにどこから始めるべきかについての情報を探しています。これは、私があまりよく知らない mysql のレイヤーです。DBがそこにあることは知っていますが、奇妙な理由でそれらをルートとして見ることができません。

mysql> SHOW GRANTS FOR 'root'@'localhost';
+------------------------------------------------------------------------+
| Grants for root@localhost                                              |
+------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION    | 
| GRANT ALL PRIVILEGES ON `db`.* TO 'root'@'localhost' WITH GRANT OPTION | 
+------------------------------------------------------------------------+
4

1 に答える 1

0

最初に mysql のデータディレクトリをバックアップします (ubuntu では /var/lib/mysql です)。ディレクトリの場所は、mysql 構成ファイルのエントリ datadir にあります。お気に入りのパッカー プログラムでそのディレクトリ、egtar または zip をバックアップします。バックアップの前に、mysql サービスを停止します。バックアップ後、mysql サービスを再度開始します。

次に、ルート ユーザーのホスト エントリ db.* を db テーブルから削除してみてください。

use mysql
select host,user,db from db;
delete from db where user="root" and db="db";

それが正しい解決策であるかどうかはわかりませんが、まだテストしていないので、このアイデアを教えていただければ幸いです。ただし、最初に datadir をバックアップすることを忘れないでください。

于 2012-10-18T19:51:10.720 に答える