Mac OS Xで実行されているMySQLサーバーにリモートアクセスできません


11

Mac OS X Maverickを実行する仕事用コンピューターでMySQLサーバーを実行しています。Mac OS Maverickがインストールされている自宅のコンピューターからアクセスしたい。

端末から、1つのタブで作業用コンピューターにsshし、sshセッションをアイドル状態にせずにそのままにしておくと、別のタブでMySQLサーバーにアクセスできます。

ただし、sshセッションが実行されていないと、次のエラーが発生します

エラー2003(HY000): 'SERVER_IP_ADDRESS'(60)のMySQLサーバーに接続できません

my.cnfbind-addressをコメント化するか、割り当ててサーバー上のファイルを変更しようとしました0.0.0.0が、機能しません。

なぜそうなのですか?クライアントでsshを実行せずにリモートアクセスを許可するようにサーバーを構成するにはどうすればよいですか?誰か助けてくれますか?


リモートOS Xで実行されているPostGISにも同じ問題があります...がssh1つのタブで開いているときにデータベースに接続できますが、それ以外の場合はできません。問題は、リモートサーバーにログインしていないときにデータベースサーバープロセスが一時停止または実行されていないことです。
アンディベガ2015

回答:


20

私は今日、Homebrewで最近更新されたMySQL 5.7を備えたOSX Yosemiteで、このエラーに頭を悩ませています。StackOverflowや他の場所での提案に従って、私はmy.cnfすべてが指定されたファイルを探し回りましたbind-address=0.0.0.0。私も除去され、これらの指示に従ってMySQLを再インストールしてから使用して再インストールbrew install mysql。まだリモート接続は許可されていません。

私が実行ps -ax | grep mysqlし、起動コマンドでバインドアドレスが渡されていることに気付いて(my.cnfファイルを上書きして)初めて気がついたのは、さらに掘り下げて、HomebrewがMySQLをデフォルトで127.0.0.1にバインドしていることでした。

~/Library/LaunchAgents/homebrew.mxcl.mysql.plist変更--bind-address=127.0.0.1して編集して--bind-address=0.0.0.0私の問題を解決しました(これが単なる開発マシンでない場合は、後者を特定のIPアドレスに変更する必要があります)。

これは、私が相談したほとんどのリソースから欠けていた重要な情報であると思いますので、ここに投稿することで他の誰かの助けになると期待しています!

編集:としてLeandroCRはランニング、コメントで示されたbrew services restart mysql再接続を拒否不思議なのMySQLにつながる、デフォルトの1とのLaunchAgentsでのplistファイルを上書きします。私が最初に書いたものよりも良いアドバイスは次のとおりです:

  1. 編集/usr/local/Cellar/mysql/<yourversion>/homebrew.mxcl.mysql.plistと置換--bind-address=127.0.0.1してbind-address=*--bind-address=0.0.0.0バインド・アドレス上でMySQLのマニュアルを参照してください
  2. を使用してmysqlを再起動します brew services restart mysql

その後、MySQLはそれ以降、非ローカル接続を受け入れ続けるはずです。おそらく、再インストールするまでです。

編集(2019年9月) Timothy Zornは、Homebrewを介してインストールおよび実行されるMySQL 8.xではこの問題が発生しないことを指摘しているため、2016年に書かれた上記の私の回答は5.xにのみ関連する可能性があります。


3
別のヒント:$ brew servicesを実行している場合、mysqlを再起動すると、毎回LaunchAgentsからplistファイルがクリーンアップされます。その変更を維持したい場合は、/ usr / local / Cellar / mysql / <yourversion> /homebrew.mxcl.mysql.plistを編集してください-Emmaにも感謝します!!!
LeandroCR 2016

を使用してmysql 5.6をインストールしbrew install mysql56~/Library/LaunchAgents/homebrew.mxcl.mysql56.plistおよび/usr/local/Cellar/mysql56/5.6.32/homebrew.mxcl.mysql56.plistファイルの両方を変更しました。しかし、それでもmysqlをを介して起動するmysql.server startと、psコマンドはbind-address=127.0.0.1。編集する他のファイルはありますか?
xi.lin 2016年

@ xi.lin私が理解しているようにmysql.server start、LaunchAgentをバイパスするため、おそらく他の場所から設定を取得します。の設定を使用するにはplist、おそらく使用する必要がありますbrew services restart mysql
Emma Burrows

@EmmaBurrows brew services restart mysql出力Successfully started mysql`(ラベル:homebrew.mxcl.mysql) ` を使用しますが、アドレスは127.0.0.1 です。実際には、homebrew.mxcl.mysql.plist代わりにxi.linを見つけることができませんでしたhomebrew.mxcl.mysql56.plist
xi.lin

1
現在のところ、これはもはや機能していません。mysqld_safe私のために実行するために使用されるコマンドには何もありませんbind_address。代わりに、で指定されてい/usr/local/etc/my.cnfます。
Timmmm 2017

6

実行locate my.cnfするとファイルが見つかりました/usr/local/etc/my.cnf

  1. そのファイルを編集して設定します bind-address = 0.0.0.0
  2. mysqlを再起動します。 brew services restart mysql

5

'%'ワイルドカードを使用してリモートアクセス用のユーザーを作成し、DBへのアクセス許可を付与する必要があると思います。

ステップ1:

my.cnf(/server/9107/how-do-i-find-where-mysql-is-loading-its-config-from)で、バインドアドレスをコメント化します

# bind-address        = xxx.xxx.xxx.xxx

MySQLサーバーを再起動します。

ステップ2:

次に、リモートアクセスのユーザーに権限を付与する必要があります

GRANT ALL ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypass';

リモート接続を有効にする方法をご覧ください


以前にこの設定(bind-addressをコメントアウト)を試してみましたが、機能しませんでした。ユーザーを作成し、すべての権限も付与しました。mysql> show grants for 'home'; | Grants for home@% | GRANT ALL PRIVILEGES ON *.* TO 'home'@'%' IDENTIFIED BY PASSWORD '...' WITH GRANT OPTION |
chepukha 2014年

ファイアウォールは設置されていますか?もしそうならそれを無効にしてください。
Abdul Manaf 2014年

はい、ファイアウォールをオフにしてもサーバーにアクセスできます。しかし、完全にオフにするのではなく、SQLサーバーへのリモートアクセスを許可するようにファイアウォールを構成できますか?サーバーのファイアウォール設定で、mysqldを「着信接続を許可する」に設定しました
chepukha

SQL Serverも同じマシンにインストールされていますか?
Abdul Manaf 2014年

はい、そうです。SQLサーバーとファイアウォールが同じマシン上にあるということですか?
chepukha 2014年

0

iptablesをiptables -Lとして確認します。

IPが存在しない場合は追加します

アクセスを許可するUbuntu ADD IPの場合:

iptables -A ALLOWIN -s 192.168.1.XX/32 ! -i lo -j ACCEPT
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.