0

MySQLユーザーのホストはデータベースによってどのように評価されますか?サーバーはからデータベースに接続しようとしますmyhostnameが、そのサーバーのホスト名をで設定しても失敗します/etc/hostname。IPを使用すると機能します。

ユーザーは次のように作成されました。

GRANT ALL ON db.* TO 'dude'@'myhostname';
4

2 に答える 2

3

MySQLエラーは、サーバーマシンがユーザーの接続元と見なすホスト名を示します。DNS設定に応じて、これはクライアントが自分自身に割り当てられていると考えるホスト名である場合とそうでない場合があります。サーバーから見た名前は、GRANTステートメントで設定する必要がある名前です。

(これは論理的です。サーバーがホストAliceに特権を与えることを知っているとします。ホストBobがいます。これはのホストなので、名前をAliceに変更できます。これを行うだけでAliceの特権が与えられれば、GRANTスキーム全体が完全になります。安全ではありません!ホストはアリスだと思っていますが、サーバーは私のIPを見て、DNSに「これは誰ですか?」と尋ね、「彼はボブです」を受け取ります。アリスの特権を盗むことはできますが、DNSレコードを危険にさらす必要があります。何とかして)

ピンチで、クライアントIPとホスト名をサーバー/etc/hostsファイルに追加します。ただし、これはハックであり、適切なDNS設定を使用することをhostsお勧めします。ハックを忘れると、数か月後に頭を悩ませるのに長い時間がかかる可能性があります。

于 2012-08-03T10:45:08.523 に答える
1

MySQLマニュアルのDNSルックアップ最適化とホストキャッシュで説明されているように:

サーバーはスレッドセーフを使用してホスト名の解決を実行しgethostbyaddr_r()gethostbyname_r()オペレーティングシステムがホスト名をサポートしている場合は呼び出します。それ以外の場合、ルックアップを実行するスレッドはミューテックスをロックし、gethostbyaddr()代わりに呼び出しgethostbyname()ます。

したがって、接続するIPの解像度は、myhostnameMySQLではなくオペレーティングシステムの問題です。まず、OSがクライアントIPを正しく解決していることを確認し、解決していない場合は、OSまたはネームサービスの構成をデバッグする必要があります(この件に関する質問は、StackOverflowではなくスーパーユーザーまたはサーバー障害に向けた方がよい場合があります)。

于 2012-08-03T10:49:02.453 に答える