ローカルマシンにMySQL Community Edition 5.5をインストールしたのですが、リモート接続を許可して外部から接続できるようにしたいのです。
どうすればよいですか?
MySQL ではデフォルトで許可されています。
デフォルトで無効になっているのはリモートの root アクセスである。 これを有効にするには、ローカルで次の SQL コマンドを実行する:
root
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である場合もある)。
my.cnf
/etc/mysql/my.cnf
Windowsシステムであれば、MySQLのインストールディレクトリにあり、通常はC:◆Program FilesMySQL ◆MySQL Server 5.5のようになり、ファイル名はmy.iniになります。
C:◆Program FilesMySQL ◆MySQL Server 5.5
my.ini
行を変更する
bind-address = 127.0.0.1
を
#bind-address = 127.0.0.1
変更を有効にするために MySQL サーバ (Unix/OSX および Windows) を再起動します。
上記のすべてを行った後も、リモートで「root」としてログインすることはできませんでしたが、ポート 3306へのTelnettingは、「MySQL」が接続を受け入れていることを確認しました。
3306
MySQLでユーザーを調べ始めたところ、パスワードが異なる複数のルートユーザーがいることに気づきました。
select user, host, password from mysql.user;
したがって、 MySQLでrootのすべてのパスワードを設定を再度設定すると、最終的にリモートで rootとしてログインできます。
MySQL
use mysql; update user set password=PASSWORD('NEWPASSWORD') where User='root'; flush privileges;
私の経験からのメモとして、このパス /etc/mysql/mysql.conf.d/mysqld.cnfの下に構成ファイルを見つけることができます。
/etc/mysql/mysql.conf.d/mysqld.cnf
(私はこの道を見つけるためにしばらく苦労しました)。
私の場合、cent OS上でリモートのmysqlサーバーに接続しようとしていました。多くの解決策(すべての権限の付与、IPバインディングの削除、ネットワークの有効化)を行ったが、問題は解決しなかった。
結局、いろいろな解決策を調べているうちにiptablesに出会い、mysqlのポート3306が接続を受け付けないことに気づきました。
この問題をどのようにチェックし、解決したかを少し書いておく。
telnet (mysql server ip) [portNo]
MySQLユーザーのワイルドカードリモートアクセスを設定するには、以下の手順に従ってください。
(1)cmdを開きます。 。 (2)パスC:\ Program Files \ MySQL \ MySQL Server 5.X \ binに移動します。 このコマンドを実行します。 。 mysql -u root -p 。 。 (3)ルートパスワードを入力します。 。 (4)許可を提供するために次のコマンドを実行します。 。 *すべての特権を付与します。\ 識別された「USERNAME」@「IP」へ。 'PASSWORD'; 。 。 USERNAME:MySQLサーバーに接続するユーザー名。 。 IP:MySQLへのアクセスを許可する場所からのパブリックIPアドレス。 サーバー。 。 パスワード:使用したユーザー名のパスワード。 。 IPは%に置き換えることができ、ユーザーは任意のIPから接続できます。 住所。 。 。 (5)次のコマンドでprevilegesをフラッシュし、終了します。 。 フラッシュ特権; 。 。 終了; 。 または \ q **。
。![ここに画像の説明を入力してください](https://i.stack.imgur.com/8bD4d.png。)。
MySQLを「brew」からインストールした場合、実際にはデフォルトではローカルインターフェイスでのみリッスンします。 これを修正するには、 /usr/local/etc/my.cnfを編集し、 bind-addressを 127.0.0.1から*に変更する必要があります。
/usr/local/etc/my.cnf
bind-address
127.0.0.1
*
次に、「brew services restart mysql」を実行します。
MySQL サーバプロセスが 127.0.0.1 または ::1 のみをリッスンしている場合、リモート接続できません。etc/my.cnfでbind-address` を設定している場合、これが問題の原因である可能性があります。
で
また、localhost 以外のユーザーの権限も追加する必要がある。
localhost
ただF.Y.I 私はこの問題で何時間も髪を引き出しました。. 最後にホスティングプロバイダーに電話したところ、私の場合はクラウドサーバーを使用しており、コントロールパネルに1and1のセカンダリファイアウォールがあり、クローンしてポート3306を追加する必要があります。 追加したら、すぐに入りました。.
ファイアウォールサービスが実行されている場合は、ファイアウォールポート3306も開いていることを確認してください。
このブログローカルエリアネットワークでMySQLサーバーをセットアップする方法は、「MySQL」をゼロからセットアップするのに役立ちます。
また、OS Xのユーザーは、bind-addressパラメーターが通常、my.iniファイルではなくlaunchd plistに設定されていることに注意してください。 したがって、私の場合、 /Library/LaunchDaemons/homebrew.mxcl.mariadb.plistから < string> --bind-address = 127.0.0.1< / string>を削除しました。
/Library/LaunchDaemons/homebrew.mxcl.mariadb.plist
< string> --bind-address = 127.0.0.1< / string>
mysqldにbind addressがループバック/ローカルアドレスに設定されている場合(例:. 127.0.0.1)、リモートホストからループバックインターフェイスに到達できないため、サーバーはリモートホストから到達できません。
mysqld
このオプションを 0.0.0.0( :: IPv4 + 6の場合)に設定して、任意のホストからの接続を受け入れるか、1つのインターフェイスでのみ接続を許可する場合は、外部から到達可能な別のアドレスへの接続を受け入れます。
0.0.0.0
::
ソース。
Windowsで PCの名前を使用する必要がある場合があります。
最初のステップ) mysqlの構成ファイルに入れます:
mysqld.cnf SET bind-address = 0.0.0.0。
(tcp / ipを介して接続を再調整するため)。
2番目のステップ) mysql、テーブルユーザーでユーザーを作成します。 windowsのPCの名前プロパティ、 NOT ip を使用します。
。![ここに画像の説明を入力してください](https://i.stack.imgur.com/bXLab.png。)。
MySQL ではデフォルトで許可されています。
デフォルトで無効になっているのはリモートの
root
アクセスである。 これを有効にするには、ローカルで次の SQL コマンドを実行する:そして、次の行を見つけ、
my.cnf
ファイル(Unix/OSXシステムでは通常/etc/mysql/my.cnf
にある)にコメントアウトしてください。このファイルの場所が/etc/mysql/mysql.conf.d/mysqld.cnfである場合もある)。Windowsシステムであれば、MySQLのインストールディレクトリにあり、通常は
C:◆Program FilesMySQL ◆MySQL Server 5.5
のようになり、ファイル名はmy.ini
になります。行を変更する
を
変更を有効にするために MySQL サーバ (Unix/OSX および Windows) を再起動します。
上記のすべてを行った後も、リモートで「root」としてログインすることはできませんでしたが、ポート
3306
へのTelnettingは、「MySQL」が接続を受け入れていることを確認しました。MySQLでユーザーを調べ始めたところ、パスワードが異なる複数のルートユーザーがいることに気づきました。
したがって、
MySQL
でrootのすべてのパスワードを設定を再度設定すると、最終的にリモートでroot
としてログインできます。私の経験からのメモとして、このパス
/etc/mysql/mysql.conf.d/mysqld.cnf
の下に構成ファイルを見つけることができます。(私はこの道を見つけるためにしばらく苦労しました)。
私の場合、cent OS上でリモートのmysqlサーバーに接続しようとしていました。多くの解決策(すべての権限の付与、IPバインディングの削除、ネットワークの有効化)を行ったが、問題は解決しなかった。
結局、いろいろな解決策を調べているうちにiptablesに出会い、mysqlのポート3306が接続を受け付けないことに気づきました。
この問題をどのようにチェックし、解決したかを少し書いておく。
telnet (mysql server ip) [portNo]
MySQLユーザーのワイルドカードリモートアクセスを設定するには、以下の手順に従ってください。
。![ここに画像の説明を入力してください](https://i.stack.imgur.com/8bD4d.png。)。
MySQLを「brew」からインストールした場合、実際にはデフォルトではローカルインターフェイスでのみリッスンします。 これを修正するには、
/usr/local/etc/my.cnf
を編集し、bind-address
を127.0.0.1
から*
に変更する必要があります。次に、「brew services restart mysql」を実行します。
MySQL サーバプロセスが 127.0.0.1 または ::1 のみをリッスンしている場合、リモート接続できません。etc/my.cnf
で
bind-address` を設定している場合、これが問題の原因である可能性があります。また、
localhost
以外のユーザーの権限も追加する必要がある。ただF.Y.I 私はこの問題で何時間も髪を引き出しました。. 最後にホスティングプロバイダーに電話したところ、私の場合はクラウドサーバーを使用しており、コントロールパネルに1and1のセカンダリファイアウォールがあり、クローンしてポート3306を追加する必要があります。 追加したら、すぐに入りました。.
ファイアウォールサービスが実行されている場合は、ファイアウォールポート3306も開いていることを確認してください。
このブログローカルエリアネットワークでMySQLサーバーをセットアップする方法は、「MySQL」をゼロからセットアップするのに役立ちます。
また、OS Xのユーザーは、bind-addressパラメーターが通常、my.iniファイルではなくlaunchd plistに設定されていることに注意してください。 したがって、私の場合、
/Library/LaunchDaemons/homebrew.mxcl.mariadb.plist
から< string> --bind-address = 127.0.0.1< / string>
を削除しました。mysqld
にbind addressがループバック/ローカルアドレスに設定されている場合(例:.127.0.0.1
)、リモートホストからループバックインターフェイスに到達できないため、サーバーはリモートホストから到達できません。このオプションを
0.0.0.0
(::
IPv4 + 6の場合)に設定して、任意のホストからの接続を受け入れるか、1つのインターフェイスでのみ接続を許可する場合は、外部から到達可能な別のアドレスへの接続を受け入れます。ソース。
Windowsで PCの名前を使用する必要がある場合があります。
最初のステップ) mysqlの構成ファイルに入れます:
(tcp / ipを介して接続を再調整するため)。
2番目のステップ) mysql、テーブルユーザーでユーザーを作成します。 windowsのPCの名前プロパティ、 NOT ip を使用します。
。![ここに画像の説明を入力してください](https://i.stack.imgur.com/bXLab.png。)。