0

My MySQL セットアップで MySQL ルート ユーザーに問題があり、それを修正する方法を見つけることができません。どういうわけか root ユーザーを台無しにしてしまったようで、データベースへのアクセスが非常に不安定になりました。

参考までに、OS X で MAMP を使用して MySQL サーバーを提供しています。ただし、それがどれほど重要かはわかりません-私が行ったことは何でも、それを解決するにはコマンドラインの修正が必要になると思います.

通常どおり MAMP を使用して MySQL を起動し、PHP アプリ用に作成した「標準」ユーザーを使用してデータベースにアクセスできます。ただし、MySQL GUI クライアントと phpMyAdmin で使用する root ユーザーは、「information_schema」データベースと、手動で作成した 2 つのデータベースにしかアクセスできず、おそらく (そして誤って) パーミッションが広く開かれたままになっています。私の 15 ほどの他のデータベースには、root ユーザーがアクセスできません。phpMyAdmin をロードすると、ホーム画面に "Create new database: No Privileges" と表示されます。

確かに、ある段階で MAMP ダイアログを使用して root ユーザーのパスワードを変更しました。しかし、この問題を引き起こした可能性のある何か他のことをしたかどうかは覚えていません。パスワードを再度変更してみましたが、問題は変わらないようです。

また、 --skip-grant-tables を使用して mysql を手動で起動し、特権をフラッシュするなど、コマンドラインを使用して root パスワードをリセットしようとしましたが、問題は解決していないようです。

私は自分のアイデアの終わりに来ました。ここにいる専門家の 1 人からのステップバイステップのアドバイスと診断に非常に感謝しています!

助けてくれて本当にありがとうございます。

4

4 に答える 4

5

同じ問題が発生しました。管理コンソールまたはクエリブラウザを介してmysqlデータベースにアクセスするために機能したユーザーアカウントは1つだけでした。skip-grant-tablesを使用すると、rootを含むすべてのアカウントが突然ログインできました。

2006年まではバグだと思っていましたが、最後のエントリにはskip-grant-tablesモードで実行できるコマンドがないため、まだ問題を解決できていませんでした。

私を助けたものこの答えは、上記のリンクで
ベン・バケラーが説明したものと似ています。問題は、名前解決フラグが無効になっている場合に発生します(skip-name-resolve)。これにより、「localhost」を解決するmysqlの機能が無効になり、mysql.userテーブルにはlocalhost/rootのエントリしかありません。my.ini

代わりに、mysql.userテーブルのlocalhostエントリを127.0.0.1に更新すると、名前解決のスキップ機能が有効になっている場合でも、ローカルコンソールにログインできます。

于 2010-09-23T16:41:41.020 に答える
1

コメントには、現在のルート権限が表示されます (--skip-grant-tables なし)。'root'@'%' のエントリがなくても問題ありません。デフォルトではエントリがなく、セキュリティ対策と見なすことができます。

'root'@'localhost'特権を台無しにしてしまったようです。GRANT ALL PRIVILEGES ON .変だ。GRANT ALL PRIVILEGES ON *.*通常、またはのようなものがありますGRANT ALL PRIVILEGES ON myDatabase.myTableGRANT権限を付与するデータベースやテーブルを指定していません。あなたのクライアントがどのようにそれを作成したのか、私にはわかりません。mysqlコマンドラインクライアントで再現できません(空の文字列、空白、あらゆる種類の引用符を試しました...)、mysqlはGRANTステートメントを拒否します(もちろん、これは正しい動作です)。MAMP は本当に奇妙なことをしているようです。あなたのようなものを再現できないので、mysql がそれをどのように解釈するかはわかりませんが、グローバル レベルでGRANT権限が設定されていると思います。'N'

これを修正するには、適切な権限を持つユーザーが必要です。通常、ユーザー'root'@'localhost''root'@'your-hostname'. 運が良ければ、'root'@'your-hostname'まだ大丈夫です。残念ながら、 mysql接続は次のように機能しlocalhostます。に接続する場合は、として接続します。このユーザーの権限がまだ問題ない場合は、権限を更新して完了です。'root'@'localhost'127.0.0.1'root'@'localhost'your-hostname'root'@'your-hostname''root'@'localhost'

127.0.0.1あなたのコメントでは、ソケットが異常な場所にあるため、接続できないと言っています。エラーを誤解していると思います。IIRC に接続する場合はソケット経由で接続しますが、または'localhost'に接続する場合は TCP/IP 経由で接続します。mysql がソケット経由で接続しようとしてソケットを見つけられない場合 (正しい場所を指定しなかったために)、エラー メッセージには mysql がソケットを見つけようとした場所が示されます。あなたのエラーメッセージはそうではありません。あなたのエラーはネットワークエラーだと思います。オプションを指定して mysql-server を起動したか、設定で正しくない bind-address を指定している可能性があります。最初にそれを修正する必要があります。そうしないと、として接続できません。127.0.0.1your-hostname--skip-networking'root'@'your-hostname'

于 2010-04-08T08:51:10.317 に答える
0

これは、MAMP とコマンドライン mysql (および MAMP 以外のすべての mysql) が異なるためです。

MAMPには独自のmysqlが組み込まれており、コマンドラインからアクセスすることはできず、phpmyadminでビルドするだけです。

これは私の経験でした。私はMAMPを持っており、Ruby on Railsやその他のものに他のmysqlを使用しています。

于 2010-04-07T22:25:55.813 に答える