MySQL Debianサーバーへのリモートアクセスを有効にするにはどうすればよいですか?
すべてのIPアドレスを有効にすることはセキュリティ上の危険があるため、ローカルMySQLサーバーへの静的なリモートIPアクセスのみを許可する必要があります。リモートアクセスを有効にするために従う必要がある手順のリファレンスとして、以下のガイドを使用してください。
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からのアクセスを許可できます。
リモートアクセス用に別の
USERNAME
とPASSWORD
を指定することもできます。最終結果は次の方法で確認できます。
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特権が表示された場合、それは問題ありません。それはまったく特権がないのと同じくらい良いです。取り消せるかどうかはわかりません。