2

私はこの奇妙な問題を抱えています。2 つの NIC を備えた ubuntu 12.04 サーバーがあります。一方は 172.30.1.1 で公開され、もう一方は 192.168.1.1 で非公開です。MySQL サーバーを実行しています。では/etc/mysql/my.conf、 がありbind-address = 0.0.0.0ます。

テーブルが作成され、権限が付与されます。

CREATE DATABASE db;
GRANT ALL ON db.* TO 'user0'@'%' IDENTIFIED BY 'password';
GRANT ALL ON db.* TO 'user0'@'localhost' IDENTIFIED BY 'password';

ホスト名は「myhost」で、/etc/hostname. /etc/hostsもっている

127.0.0.1       localhost
127.0.1.1       myhost
192.168.1.1     myhost

172.30.1.1で接続すると問題ありません。しかし、192.168.1.1 を使用すると、アクセスが拒否されます。 mysql -h 192.168.1.1 -uuser0 -ppassword ERROR 1045 (28000): Access denied for user 'user0'@'myhost' (using password: YES) このようなユーザーテーブルがあります。

    mysql> SELECT user, host FROM mysql.user;
    +------------------+-----------+
    | user             | host      |
    +------------------+-----------+
    | user0            | %         |
    | root             | 127.0.0.1 |
    | root             | ::1       |
    |                  | localhost |
    | debian-sys-maint | localhost |
    | user0            | localhost |
    | root             | localhost |
    |                  | myhost    |
    | root             | myhost    |
    +------------------+-----------+

違いは、ファイルに192.168.1.1 myhost行があることです。/etc/hosts172.30.1.1 ではありません。その行を削除するか、IP の後のホスト名を変更すると、正常に動作します。に追加172.30.1.1 myhostすると/etc/hosts、172 IP で接続できなくなります。これをどう説明する?

4

1 に答える 1

1

通常、匿名ユーザー (空のユーザー名) にはそのような効果があります。mysql.userテーブルで一致を探す場合、''@myhost最初に見つかった (''すべてのユーザーに一致するため) 'user0'@'%'が無視されます。

ベスト プラクティスは、空のユーザー名を削除することです。

于 2013-09-22T20:49:37.770 に答える