web-dev-qa-db-ja.com

サブネット全体に対してMySQLへのリモートアクセスを許可する方法は?

このコードを使用して、1つのIPへのアクセスを簡単に許可できます。

$ mysql -u root -p
Enter password:    
mysql> use mysql    
mysql> GRANT ALL ON *.* to root@'192.168.1.4' IDENTIFIED BY 'your-root-password';     
mysql> FLUSH PRIVILEGES;

しかし、サブネット192.168.1。*全体がデータベースにリモートでアクセスできるようにする必要があります。

どうやってやるの?

76
skystar7

編集:このページで Malvineous の答えを見て、それを支持することを検討してください。ネットマスクは、はるかにエレガントなソリューションです。


IPアドレスでワイルドカードとしてパーセント記号を使用するだけです。

http://dev.mysql.com/doc/refman/5.1/en/grant.html から

ホスト名にワイルドカードを指定できます。たとえば、user_name@'%.example.com'user_nameドメインのすべてのホストのexample.comに適用され、user_name@'192.168.1.%'user_nameのすべてのホストの192.168.1に適用されますクラスCサブネット。

88
p0lar_bear

ネットマスクを使用することもできるようです 、例えば.

GRANT ... TO 'user'@'192.168.0.0/255.255.255.0' IDENTIFIED BY ...
81
Malvineous

次のようにワイルドカードとして「%」を使用します。

GRANT ALL ON *.* to root@'192.168.1.%' IDENTIFIED BY 'your-root-password';
25
Mike Brant
mysql> GRANT ALL ON *.* to root@'192.168.1.%' IDENTIFIED BY 'your-root-password';  

ワイルドカード文字は、「*」ではなく「%」です

12
David Allen

私が直面した特異性のメモ:
検討:

db server:  192.168.0.101
web server: 192.168.0.102

Mysql.userでpassword_1を持つ'user'@'192.168.0.102'とpassword2を持つ別の'user'@'192.168.0.%'としてユーザーを定義している場合

その後、

password2で「ユーザー」としてWebサーバーからdbサーバーに接続しようとすると

単一のIP 'user'@'192.168.0.102'認証がワイルドカード'user'@'192.168.0.%'認証を介して使用されるため、「アクセス拒否」エラーが発生します。

3
site80443