MySQL:複数のホストから接続できるユーザーの作成


30

MySQLを使用しているので、ローカルホストまたは別のサーバー(10.1.1.1)から接続できるアカウントを作成する必要があります。だから私はやっている:

CREATE USER 'bob'@'localhost' IDENTIFIED BY 'password123';
CREATE USER 'bob'@'10.1.1.1' IDENTIFIED BY 'password123';
GRANT SELECT, INSERT, UPDATE, DELETE on MyDatabse.* to 'bob'@'localhost', 'bob'@'10.1.1.1';

これは正常に機能しますが、複数のIPにリンクされているユーザーアカウントを作成するよりエレガントな方法はありますか、それともこの方法で行う必要がありますか?

私の主な心配は、将来、一方の「bob」アカウントの許可が更新されますが、もう一方のアカウントは更新されないことです。

回答:


20

ホストに制限したいが、を使用してサブネットまたはワイルドカードに基づいて指定したくない場合%は、それがそれを行う唯一の方法です。詳細については、MySQLのドキュメントを参照してください。

私は、大規模なMySQLインストールの認証を管理する際にオーバーヘッドを排除する方法を探していますが、完璧なソリューションはまだ見つかりません。


8

MySQLシェル内で「chaminda」という新しいユーザーを作成することから始めましょう。

CREATE USER 'chaminda'@'%' IDENTIFIED BY 'password';

最初に行うことは、ユーザーに必要な許可を与えることです。ここでは、特定のユーザーにすべての許可を与えました。

GRANT ALL PRIVILEGES ON * . * TO 'chaminda'@'%';

すべての特権をリロードします。

FLUSH PRIVILEGES;

特定のユーザーにIPの範囲を許可する場合は、次のように使用します10.1.1。%

GRANT ALL PRIVILEGES ON * . * TO 'chaminda'@'10.1.1.%';

注: ここで、ホスト名=%です。つまり、任意のホストからこのデータベースサーバーにアクセスできます。ユーザーにすべての特権を付与することは大きなリスクであり、ベストプラクティスではありません。さらに、ユーザー「chaminda」を「bob」に置き換えることができます。


5
これは質問に答えません。すべてのIPからユーザーにアクセスを許可しますが、OPは、1人のユーザーがIPのリストからデータベースにアクセスできるようにするよりエレガントな方法を求めています。基本的に、複数のIPからユーザーを複数回追加する複数のステートメントの代わりに、複数のIPからデータベースにアクセスできる単一のユーザーを追加することで、管理が容易になり、エラーが発生しにくくなります。
アンソニー

_を10.1.1.1__のようなワイルドカードとして使用して100 -199に一致させることもできますが、200の場合は別のアカウントを作成するか、%ワイルドカードを使用して0-99と201-255も含める必要があります
Chaminda Bandara

-3

MySQLでは、1行に複数のワイルドカードを使用できます。可能な解決策は、ユーザーのためのセットのホストにあるBobであることを

locahost/10.1.1.1

参照:

http://dev.mysql.com/doc/refman/5.1/en/connection-access.html


それはドキュメントが言っていることではありません。表にリストされているように、/ 255.255.255.0はネットマスクです。ホスト定義に複数のワイルドカードをリストする方法がある場合、それはそれを行う方法ではありません。
マジクマン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.