sql >> データベース >  >> RDS >> Mysql

ユーザー'test'@'ip'のアクセスが拒否されました(パスワードを使用:YES)

    「ユーザー'test'@'ip'のアクセスが拒否されました(パスワード:YESを使用)」はMySQLエラーです。

    これは、ネットワークレベルですべてが機能していることを意味します 、特定のユーザーとしてのアクセスを拒否されるため 、サーバーは接続しようとしているユーザーを理解している必要があります 。したがって、ネットワーク、ファイアウォール、ルーティングなど、すべてが機能している必要があります;サーバーはリッスンしている必要があります。

    問題は「単に」認証にあります 。

    (認証を上書きするために)データベースにローカルに接続して、特権テーブルを調べてみてください:

    USE mysql;
    SELECT User, Host, Password from user WHERE User = 'test';
    

    また、関心のある行はIPに言及している行であることを忘れないでください(エラーメッセージはIPを指定しているため) 、およびではない ホスト名-この場合、DNSの問題である可能性があります。ホスト名はサーバーがあなたの出身であると信じているホスト名です。 、実際のホスト名ではありません。

    ユーザー/ホストのマッチングは、より具体的な<から / strong> 具体性が低い 。したがって、すでに持っている場合:

    user      host     password
    test      1.2.3.4  foo
    

    走った

    GRANT... TO [email protected]'%' ... PASSWORD bar
    

    ...この助成金はを除くどこからでも機能します 1.2.3.4、パスワードは「foo」のままになります。

    マニュアルから(上記のリンク):

    あなたはやらざるを得ないかもしれません

    USE mysql;
    DELETE FROM user WHERE User = 'test';
    GRANT ALL PRIVILEGES ON database.* TO 'test'@'%' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    

    ユーザーの「テスト」を参照する偽の行が付与テーブルにないことを確認します。

    (また、GRANTはそうあるべきだと思います

    GRANT ALL PRIVILEGES ON databasename.*
    

    セキュリティの疑い(回答とは無関係)

    上記のマニュアルには次のように記載されています。リテラルIPアドレスの特異性は、ネットマスクがあるかどうかに影響されないため、192.168.1.13と192.168.1.0/255.255.255.0は同等に特異的であると見なされます

    一見したところ、127.0.0.1/0.0.0.0 localhost には非常に具体的(そして無害)なようです 。ネットマスクは、私が間違っていなければ、%と同等であることを保証します 、非常に具体的で、最初に実行されることを除いて 。したがって

    test     bar         %           
    test     localfoo    127.0.0.1/0.0.0.0
    

    testのパスワードを意味します どこからでも「bar」ではありませんが、「localfoo」です。

    誰もそのような助成金を誤って挿入することはありませんが、間違いと間違いがあります 。



    1. PDOのエラー:nullでメンバー関数prepare()を呼び出す

    2. Java / MySQL..SQLException:テーブルには少なくとも1つの列が必要ですSQLState:42000 VendorError:1113

    3. Cotd()がPostgreSQLでどのように機能するか

    4. Ubuntu 20.04 / 18.04/16.04にpgAdmin4をインストールする方法