315

私はこのコマンドを知っています:

GRANT ALL PRIVILEGES
ON database.*
TO 'user'@'yourremotehost'
IDENTIFIED BY 'newpassword';

しかし、このリモート MySQL データベースにアクセスするための特定の IP アドレスを許可することしかできません。リモートホストがこの MySQL データベースにアクセスできるようにしたい場合はどうすればよいですか? それ、どうやったら出来るの?基本的に、このデータベースを公開して、誰もがアクセスできるようにしています。

4

22 に答える 22

308
TO 'user'@'%'

%はワイルドカードです。必要に応じて、'%.domain.com'または'%.123.123.123'などを実行することもできます。

于 2011-12-01T21:29:29.337 に答える
191

リモート アクセスを有効にする (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 権限が表示された場合は問題ありません。なんの特権もないに等しい。取り消せるか不安です。

于 2015-09-22T11:45:42.250 に答える
39

上記の手順が完了し、MySql ポート 3306 がリモートで自由にアクセスできると仮定します。mysql 構成ファイルでパブリック IP アドレスをバインドすることを忘れないでください。

たとえば、私のubuntuサーバーでは:

#nano /etc/mysql/my.cnf

ファイルで、 [mysqld]セクション ブロックを検索し、新しいバインド アドレスを追加します。この例では、192.168.0.116 です。それはこのように見えるでしょう

......    
.....    
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.

bind-address        = 127.0.0.1    
bind-address        = 192.168.0.116

.....    
......

必要に応じて localhost(127.0.0.1) バインディングを削除できますが、ローカル マシン上のサーバーにアクセスするには、具体的に IP アドレスを指定する必要があります。

次に、最後のステップはMySqlサーバーを再起動することです(ubuntu上)

stop mysql

start mysql

または#/etc/init.d/mysql restart他のシステムの場合

これで、MySQL データベースにリモートでアクセスできるようになりました。

mysql -u username -h 192.168.0.116 -p
于 2013-05-20T11:40:54.230 に答える
29

localhost 経由の接続を有効にするには、構成ファイルの変更が必要です。

リモート IP 経由で接続するには、「root」ユーザーとしてログインし、mysql で以下のクエリを実行します。

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION;

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

GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;

FLUSH PRIVILEGES;

これにより、localhost およびリモート IP からアクセスできる新しいユーザーが作成されます。

また、/etc/mysql/my.cnf にある my.cnf ファイルから以下の行にコメントを付けます。

bind-address = 127.0.0.1

を使用してmysqlを再起動します

sudo service mysql restart

これで、mysql にリモート接続できるはずです。

于 2016-05-08T17:29:04.880 に答える
26

これをいじった人のために、これが私が特権を付与する方法です。誰かの助けになることを願っています

GRANT ALL ON yourdatabasename.* TO root@'%' IDENTIFIED BY
'yourRootPassword';

前述のよう%にワイルドカードを使用すると、任意の IP アドレスがデータベースに接続できるようになります。ここで想定しているのは、接続したときに名前の付いたユーザーがいるということrootです (ただし、これがデフォルトです)。root パスワードを入力すれば準備完了です。'ユーザー root を一重引用符 ( ) で囲んでいないことに注意してください。

于 2015-03-21T09:31:46.280 に答える
17

以下を実行します。

$ mysql -u root -p      
mysql> GRANT ALL ON *.* to root@'ipaddress' IDENTIFIED BY 'mysql root password';     
mysql> FLUSH PRIVILEGES;     
mysql> exit

次に、指定した IP アドレスから接続を試みます。

mysql -h address-of-remove-server -u root -p   

接続できるはずです。

于 2016-01-15T05:34:42.530 に答える
8
GRANT ALL PRIVILEGES ON *.* TO 'user'@'ipadress'
于 2014-10-07T15:20:29.943 に答える
0

cPanel のような Web サイト パネル%では、許可されたホスト名に 1 つの (パーセント記号) を追加して、MySQL データベースにアクセスできます。

シングル%を追加することで、デスクトップ アプリケーションからでも、任意の IP または Web サイトからデータベースにアクセスできます。

于 2014-03-29T16:28:36.260 に答える