「ユーザー'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」です。
誰もそのような助成金を誤って挿入することはありませんが、間違いと間違いがあります 。