リモート アクセスを有効にする (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 にアクセスすることが許可されています。したがって、特権を更新する必要があります。(その目的のために別のユーザーを作成する場合は、を使用できますCREATE USER 'USERNAME'@'localhost' IDENTIFIED BY 'PASSWORD';
)
以下のようなコマンドを実行して、すべてのマシンからアクセスします。USERNAME
( andを資格情報に置き換えPASSWORD
ます。)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
以下のようなコマンドを実行して、特定の IP からのアクセスを許可します。USERNAME
( andを資格情報に置き換え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 権限が表示された場合は問題ありません。なんの特権もないに等しい。取り消せるか不安です。