web-dev-qa-db-ja.com

外部/リモート接続用にRaspberry PiでMySQLを開くにはどうすればよいですか?

自家醸造活動の温度データを保存するRaspberry Piがあります。コンピューターでSpring MVCアプリケーションを作成していますが、データをタップしたいです。 Piとコンピューターの両方がローカルネットワーク上にあります。 RPiに完全にSSHとFTPで接続できます。

mysql --192.168.1.102 --u root -p db

「 '192.168.1.102'のMySQLサーバーに接続できません」を引き起こします。

私のJavaアプリケーションも接続していないのは明らかです。

SHOW VARIABLES WHERE VARIABLE_NAME = 'port' ;

デフォルトのポート3306を返します。

MySQLへのリモート接続を許可するために有効にする必要がある設定はありますか?

21
Matthew Moisen

私は最近自分で同じ問題を抱えています。私は次のことをしてそれを機能させました:

MySQL構成の編集

デフォルトでは、MySQLはリモート接続を受け入れるように構成されていません。構成ファイルを変更することにより、リモート接続を有効にできます。

Sudo nano /etc/mysql/my.cnf

[mysqld]セクションを見つけます。変更する必要がある行はbind-addressで、127.0.0.1のデフォルト値に設定する必要があります。この行を編集して、代わりにネットワーク上のRPiのIPを表示します(例では192.168.1.102のようです)。変更を書き込みます。

MySQLサービスを再起動

Sudo service mysql restart

MySQLパーミッションのセットアップ

MySQLインスタンスにルートとして接続します。

mysql -p -u root

ユーザーを作成します。

CREATE USER '<username>'@'<ip_address>' IDENTIFIED BY '<password>';  
  • 構文内のアポストロフィ( ')は必須です
  • IPアドレスは、接続しようとしているネットワーク上のデバイスのIPアドレスです

関連するデータベースとテーブルにアクセス許可を付与します。

GRANT ALL PRIVILEGES ON <database>.* TO '<username>'@'<ip_address>' IDENTIFIED BY '<password>';
  • パラメーターは、前のステップでユーザーを作成するために使用したパラメーターです
  • *は、指定されたデータベース内のすべてのテーブルへのアクセスを許可します。または、特定のテーブルを指定できます
  • 関連する特権を付与するだけでセキュリティを強化したいと思うかもしれませんが、それが機能することをテストするには十分です

うまくいけばうまくいくはずです!

33
Luke Zaparaniuk

this instructableで見つかったコメントのおかげで、次のように機能しました。

  1. 次を使用して、リモートマシンへのアクセスを許可します。GRANT ALL ON *.* TO 'root'@'192.168.1.%' IDENTIFIED BY 'your_password_here';(ネットワーク上の任意のコンピューターが接続できるように、192.168.1。%を使用しました)
  2. My.cnfファイル(Sudo nano /etc/mysql/my.cnf)ファイルを作成し、「バインドアドレス」を探してコメントアウトします(行の先頭に#を入力します)
  3. MySQL構成をリロードします(service mysql reload
  4. MySQLサーバーを再起動します(service mysql restart
4
SausageFingers

問題がRaspberry Pi上のMySQLにリモートで接続できない場合は、以下の手順を試してください。私は同じ問題を抱えていて、以下のコマンドを実行することで解決しました。

1)Sudo nano /etc/mysql/my.cnf

2)# bind-address = 127.0.0.1 //この行をコメントアウト

bind-address = 0.0.0.0          //add this line just below above line 

3)Sudo /etc/init.d/mysql restart // mysqlを再起動します

4)Sudo mysql -u root -p //ユーザー「root」としてmysql cliにログイン

5)GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'beta' WITH GRANT OPTION;

ここで、「root」はmysqlユーザー、「beta」はパスワード、ここでは「root」の権限が設定されています。それに応じて変更し、mysql cliで上記のクエリを実行します。

幸運を !!!

3
rinoy