ホームページ > データベース > mysql チュートリアル > 必要な権限があるにもかかわらず、MySQL 権限を付与すると「アクセスが拒否されました」エラーが発生するのはなぜですか?

必要な権限があるにもかかわらず、MySQL 権限を付与すると「アクセスが拒否されました」エラーが発生するのはなぜですか?

Linda Hamilton
リリース: 2024-12-01 00:49:15
オリジナル
542 人が閲覧しました

Why Do I Get

アクセス拒否エラーなしの権限の付与

権限を付与しようとすると、MySQL ユーザーに「ユーザー 'root' のアクセスが拒否されました」というエラーが発生する場合があります。 @'localhost' (パスワードを使用: YES)。ユーザーが必要な権限を持っているように見えるため、これは不可解かもしれません。

権限の確認

ユーザーが適切な権限を持っていることを確認するには、次のコマンドを実行します。 :

SELECT user();
SELECT current_user();
SHOW GRANTS FOR 'root'@'localhost';
SELECT * FROM mysql.user WHERE User='root';
ログイン後にコピー

これらのコマンドは、ユーザーが実際に root@localhost であり、必要な権限を持っていることを確認する必要があります。以下を含む:

  • SELECT、INSERT、UPDATE、DELETE、CREATE、DROP、RELOAD、SHUTDOWN、PROCESS、FILE、ReferenceS、INDEX、ALTER、SHOW DATABASES、SUPER
  • 作成と操作テーブル、ビュー、ルーチン
  • Grant他のユーザーへの権限

問題: 特定のテーブルに対する権限の付与

これらの権限があるにもかかわらず、特定のテーブルに対して権限を付与しようとするとエラーが発生する場合があります。

GRANT ALL PRIVILEGES ON *.* TO 'steves'@'[hostname].com' IDENTIFIED BY '[OBSCURED]' WITH GRANT OPTION;
ログイン後にコピー

これは、mysql.users テーブルが考慮されるためです。 root を除くすべてのユーザーはアクセスできません。

解決策: すべてのデータベースに権限を付与する

これを回避するには、すべてのデータベースに権限を付与する次のコマンドを使用します。 mysql.users を除く:

GRANT ALL PRIVILEGES ON `%`.* TO '[user]'@'[hostname]' IDENTIFIED BY '[password]' WITH GRANT OPTION;
ログイン後にコピー

%. を使用.* の代わりに、mysql.users テーブルを除くすべてのデータベースが含まれるようにします。これにより、アクセス拒否エラーが発生することなく、権限が正常に付与されるはずです。

以上が必要な権限があるにもかかわらず、MySQL 権限を付与すると「アクセスが拒否されました」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート