リモートアクセスを有効にする(Grant)ホーム/チュートリアル/ Mysql /リモートアクセスを有効にする(Grant)リモートマシンからmysqlサーバーに接続しようとして、以下のようなエラーが発生した場合、この記事は役に立ちます。
エラー1130(HY000):ホスト '1.2.3.4'はこのMySQLサーバーへの接続を許可されていません
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 databasesを実行することを忘れないでください。リモートマシンから適切な権限があるかどうかを確認します。
ボーナスヒント:アクセス権を取り消す
誤ってユーザーにアクセスを許可する場合は、取り消しオプションを用意しておくと便利です。
以下は、すべてのマシンから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特権が表示された場合は、問題ありません。それは全く特権がないと同じくらい良いです。取り消すことができるかどうかはわかりません。