web-dev-qa-db-ja.com

MySQLサーバーへのリモートアクセスを有効にする(Linux)

MySQL Debianサーバーへのリモートアクセスを有効にするにはどうすればよいですか?

3
Petko

すべてのIPアドレスを有効にすることはセキュリティ上の危険があるため、ローカルMySQLサーバーへの静的なリモートIPアクセスのみを許可する必要があります。リモートアクセスを有効にするために従う必要がある手順のリファレンスとして、以下のガイドを使用してください。

SOURCE

Mysql構成を変更する

Mysql構成ファイルの編集から始めます

vim /etc/mysql/my.cnf

次の行をコメント化します。

#bind-address           = 127.0.0.1
#skip-networking

Skip-networking行が見つからない場合は、追加してコメント化します。

Mysqlサーバーを再起動します。

~ /etc/init.d/mysql restart

GRANT特権の変更

上記の変更を行っても、リモートアクセスまたはアクセスは取得できませんが、すべてのデータベースにアクセスできないことに驚かれるかもしれません。

デフォルトでは、使用しているmysqlのユーザー名とパスワードは、mysql-serverにローカルでアクセスできます。そのため、特権を更新する必要があります。

以下のようなコマンドを実行して、すべてのマシンからアクセスします。 (USERNAMEおよびPASSWORDを資格情報に置き換えます。)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;

以下のようなコマンドを実行して、特定のIPからのアクセスを許可します。 (USERNAMEおよびPASSWORDを資格情報に置き換えます。)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'1.2.3.4' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;

1.2.3.4をIPに置き換えることができます。上記のコマンドを何度も実行して、複数のIPからのアクセスを許可できます。

リモートアクセス用に別のUSERNAMEPASSWORDを指定することもできます。

最終結果は次の方法で確認できます。

SELECT * from information_schema.user_privileges where grantee like "'USERNAME'%";

最後に、次も実行する必要があります。

mysql> FLUSH PRIVILEGES;

テスト接続

端末/コマンドラインから:

mysql -h Host -u USERNAME -pPASSWORD

Mysqlシェルを取得する場合は、show databaseを実行することを忘れないでください。リモートマシンから適切な権限を持っているかどうかを確認する。

ボーナスヒント:アクセスを取り消す

誤ってユーザーにアクセスを許可した場合は、取り消しオプションを手元に置いておくとよいでしょう。

以下は、すべてのマシンからUSERNAMEのすべてのオプションを取り消します。

mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'USERNAME'@'%';
Following will revoke all options for USERNAME from particular IP:

mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'USERNAME'@'1.2.3.4';
Its better to check information_schema.user_privileges table after running REVOKE command.

REVOKEコマンドの実行後にUSAGE特権が表示された場合、それは問題ありません。それはまったく特権がないのと同じくらい良いです。取り消せるかどうかはわかりません。

2
Simon Hayter