web-dev-qa-db-ja.com

Mysqlへのリモート接続を許可する方法

私は自分のローカルマシンにMySQL Community Edition 5.5をインストールしましたが、外部から接続できるようにリモート接続を許可したいです。

どうやってやるの?

295
Leo

これはMySQLではデフォルトで許可されています。

デフォルトで無効になっているのはリモートrootアクセスです。それを有効にしたい場合は、このSQLコマンドをローカルで実行してください。

 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
 FLUSH PRIVILEGES;

そして、次の行を見つけて、 コメントアウトしてください あなたのmy.cnfファイルで、通常Unix/OSXシステムの/etc/mysql/my.cnfにあります。場合によっては、ファイルの場所は/etc/mysql/mysql.conf.d/mysqld.cnfです。

Windowsシステムの場合は、MySQLのインストールディレクトリにあります。通常はC:\Program Files\MySQL\MySQL Server 5.5\のような名前で、ファイル名はmy.iniになります。

行を変更

 bind-address = 127.0.0.1

 #bind-address = 127.0.0.1

変更を有効にするために、MySQLサーバー( Unix/OSX および Windows )を再起動します。

664
mjuarez

上記のすべてを実行した後、私はまだrootとしてリモートでログインすることはできませんでしたが、ポート3306にTelnet接続すると、MySQLが接続を受け入れていることが確認されました。

私はMySQLのユーザーを調べ始めたところ、 複数のrootユーザー 異なるパスワードを持つユーザーがいることに気付きました。

select user, Host, password from mysql.user;

それでMySQLで私は rootのすべてのパスワードを設定します 再び私はrootとしてリモートでログインすることができました。

use mysql;
update user set password=PASSWORD("NEWPASSWORD") where User='root';
flush privileges;
44
Matthew Lock

私の経験からのメモですが、このパスの下に設定ファイルがあります/etc/mysql/mysql.conf.d/mysqld.cnf

(私はこの道を見つけるためにしばらくの間苦労した)

29
Mayur Patel

私の場合、私はセントOS上のリモートMySQLサーバーに接続しようとしていました。多くの解決策(すべての特権の付与、ipバインディングの削除、ネットワーキングの有効化)を経ても、問題は解決しませんでした。

結局、さまざまな解決策を調べていると、iptablesに出くわしたので、MySQLポート3306が接続を受け入れていないことに気付きました。

これが私がこの問題をどのように確認し解決したかについての小さなメモです。

  • ポートが接続を受け入れているかどうかを確認します。
telnet(MySQLサーバのIP)[portNo]
  • ポートでの接続を許可するためのIPテーブルルールを追加します。
iptables -A入力-i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
  • 実稼働環境にはこれをお勧めしませんが、iptablesが正しく構成されていない場合は、ルールを追加しても問題が解決しない場合があります。その場合は以下のようにしてください。
サービスiptables停止

お役に立てれば。

24
Kushal

MySQLユーザーにワイルドカードリモートアクセスを設定するには、以下の手順に従ってください。

(1)cmdを開きます。

(2)パスC:¥Program Files¥MySQL¥MySQL Server 5.X¥binに移動して、このコマンドを実行します。

mysql -u root -p

(3)rootのパスワードを入力してください。

(4)以下のコマンドを実行して許可を与えます。

*。*のすべての特権を 'PASSWORD'で識別される 'USERNAME' @ 'IP'に付与します。

USERNAME:MySQLサーバーに接続したいユーザー名。

IP:MySQLサーバーへのアクセスを許可したい場所からのパブリックIPアドレス。

PASSWORD:使用されているユーザー名のパスワード。

ユーザーが任意のIPアドレスから接続できるように、IPを%に置き換えることができます。

(5)コマンドに従ってprevilegesをフラッシュして終了する。

FLUSH PRIVILEGES;

終了します。 または \q

enter image description here

13
Hiren Parghi

brewからMySQLをインストールしたのであれば、デフォルトではローカルインターフェースのみを監視します。これを修正するには、/usr/local/etc/my.cnfを編集し、bind-address127.0.0.1から*に変更する必要があります。

それからbrew services restart mysqlを実行してください。

6
Timmmm

MySQLサーバープロセスが127.0.0.1または:: 1でのみ待機している場合は、リモートで接続することはできません。 bind-address/etc/my.cnf設定がある場合、これが問題の原因である可能性があります。

また、localhost以外のユーザーにも特権を追加する必要があります。

5
tadman

ファイアウォールサービスが実行されている場合は、ファイアウォールポート3306が開いていることを確認してください。

2
Zelkovar

ちょっと私は何時間もこの問題で私の髪を引き抜いた..ついに私はホスティングプロバイダを呼び出し、1と1のコントロールパネルで彼らはポートを複製して追加する必要があることをクラウドサーバーを使用して3306追加されたら私はまっすぐになった..

2
Dan

このブログ ローカルエリアネットワーク上でMySQLサーバーを設定する方法 最初からMySQLを設定するのに役立ちます

mysqldbind address がループバック/ローカルアドレス(例:127.0.0.1)に設定されている場合、ループバックインタフェースにはどのリモートホストからもアクセスできないため、サーバーはリモートホストから到達できません。

任意のホストからの接続を受け付ける場合はこのオプションを0.0.0.0(IPv4 + 6の場合は::)に設定します。1つのインターフェースでのみ接続を許可する場合は、外部から到達可能な別のアドレスに設定します。

出典

1
Wesley Smith

そしてOS Xの人々にとって、bind-addressパラメータは通常my.iniファイルではなくlaunchd plistで設定されることを知っています。そこで私の場合は、<string>--bind-address=127.0.0.1</string>から/Library/LaunchDaemons/homebrew.mxcl.mariadb.plistを削除しました。

1
tdmartin102

時々windows上のpcの名前を使用する必要があります

最初のステップ) mysqlの設定ファイルに入れます:

mysqld.cnf SET bind-address = 0.0.0.0

(tcp/ip経由で接続を受信できるようにするため)

2番目のステップ) mysqlのユーザー、テーブルユーザー、Windows上のpcの名前プロパティ、NOT ip

enter image description here

0
Rubén Ruíz