Linux環境でデータベースを操作:Raspberry PiでMariaDBサーバーへのリモートアクセス

2024-06-29

Raspberry Pi で MySQL MariaDB サーバーへのリモートアクセスを可能にする

前提条件

  • Raspberry Pi
  • Raspberry Pi OS(Raspbian)
  • SSH クライアント(例:PuTTY、Terminal)

手順

  1. MariaDB サーバーのインストール
sudo apt update
sudo apt install mariadb-server

    初回起動時に、MariaDB サーバーはパスワードの設定を求めます。強力なパスワードを設定してください。

    1. リモート接続を許可する

    以下のコマンドを実行して、MariaDB 設定ファイルを編集します。

    sudo nano /etc/mysql/mariadb.cnf
    

    ファイルを編集し、bind-address 行を以下のように変更します。

    bind-address = 0.0.0.0
    

    変更を保存してファイルを閉じます。

      sudo systemctl restart mariadb
      
      1. ファイアウォール設定

      UFW ファイアウォールを使用している場合は、以下のコマンドを実行して、3306 番ポートを開放する必要があります。

      sudo ufw allow 3306
      
      1. リモートユーザーの作成

      以下のコマンドを実行して、リモートからアクセスするための新しいユーザーを作成します。

      sudo mysql -u root -p
      

      MariaDB プロンプトが表示されたら、以下のコマンドを実行して新しいユーザーを作成します。

      CREATE USER 'remote_user'@'remote_host' IDENTIFIED BY 'remote_password';
      GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'remote_host' WITH GRANT OPTION;
      FLUSH PRIVILEGES;
      

      上記の例では、remote_user はユーザー名、remote_host はリモートホストの IP アドレスまたはホスト名、remote_password は強力なパスワードに置き換えてください。

      1. リモート接続のテスト

      リモートホストから、以下のコマンドを使用して MariaDB サーバーに接続できます。

      mysql -u remote_user -p -h remote_pi_ip_address
      

      上記の例では、remote_user はステップ 6 で作成したユーザー名、remote_pi_ip_address は Raspberry Pi の IP アドレスに置き換えてください。

      補足事項

      • より高度なセキュリティ対策については、MariaDB の公式ドキュメントを参照してください。
      • Raspberry Pi にファイアウォールをインストールしていない場合は、UFW のインストールを検討してください。
      • リモートアクセスに問題がある場合は、MariaDB サーバーのログファイルを確認してください。



      • Python がインストールされている
      • Raspberry Pi で MariaDB サーバーへのリモートアクセスが設定されている

      コード

      import mysql.connector
      
      # データベース接続情報
      db_host = "localhost"
      db_user = "remote_user"
      db_password = "remote_password"
      db_name = "my_database"
      
      # データベース接続
      db_connection = mysql.connector.connect(
          host=db_host,
          user=db_user,
          password=db_password,
          database=db_name
      )
      
      # データベース操作
      db_cursor = db_connection.cursor()
      
      # サンプルクエリ:データベースにデータ挿入
      db_cursor.execute("INSERT INTO my_table (name, value) VALUES (%s, %s)", ("John Doe", 20))
      db_connection.commit()
      
      # データベース切断
      db_cursor.close()
      db_connection.close()
      

      説明

      1. mysql.connector モジュールをインポートします。
      2. データベース接続情報(ホスト、ユーザー、パスワード、データベース名)を定義します。
      3. mysql.connector.connect() 関数を使用して、データベースに接続します。
      4. cursor() メソッドを使用して、データベース操作用のカーソルを作成します。
      5. サンプルクエリを実行します。この例では、my_table テーブルにデータ行を挿入します。
      6. close() メソッドを使用して、カーソルとデータベース接続を閉じます。
      • このコードはあくまで一例です。具体的な操作は、ご自身の要件に合わせて変更してください。
      • エラー処理や接続プーリングなどの機能を追加することを検討してください。
      • 詳細については、mysql.connector ドキュメントを参照してください。



      Raspberry Pi で MariaDB サーバーへのリモートアクセスを可能にするその他の方法

      phpMyAdmin は、Web ブラウザを使用して MariaDB サーバーを管理するためのオープンソースツールです。phpMyAdmin をインストールすると、リモートホストから Web ブラウザを使用してデータベースに接続、作成、編集、削除、エクスポート、インポートすることができます。

      1. Raspberry Pi に phpMyAdmin をインストールします。
      sudo apt install phpmyadmin
      
      1. Web ブラウザを開き、以下の URL にアクセスします。
      http://raspberry_pi_ip_address/phpmyadmin
      

      SSH トンネリングを使用して、リモートホストから Raspberry Pi 上の MariaDB サーバーに安全に接続することができます。この方法は、ファイアウォールで直接的なポートフォワーディングが許可されていない場合に役立ちます。

      ssh -L 3306:localhost:3306 remote_user@raspberry_pi_ip_address
      
      mysql -u root -p -h localhost
      

      MariaDB プロンプトが表示されたら、データベース操作を実行できます。

      1. SSH トンネルを閉じるには、Ctrl + C キーを押します。

      クラウドベースのソリューションを使用する

      Amazon RDS や DigitalOcean Managed Databases など、クラウドベースのデータベースサービスを利用することもできます。これらのサービスを使用すると、Raspberry Pi 上に MariaDB サーバーをインストールおよび管理する必要がなく、リモートから簡単にアクセスできます。

      最適な方法の選択

      使用する方法は、要件とスキルレベルによって異なります。

      • 初心者 の場合は、phpMyAdmin を使用するのが最も簡単です。
      • セキュリティ が重要であれば、SSH トンネリングを使用してください。
      • 柔軟性とスケーラビリティ が必要な場合は、クラウドベースのソリューションを検討してください。

      mysql sql linux


      MySQL WorkbenchでMySQLのrootパスワードを削除する方法

      MySQLのrootパスワードは、データベースへのアクセスと管理に必要不可欠な情報です。しかし、パスワードを忘れたり、セキュリティ上の理由で削除したい場合もあるでしょう。方法MySQLのrootパスワードを削除するには、以下の2つの方法があります。...


      SQL ServerクエリでNULL値を置き換える方法の比較

      SQL ServerクエリでNULL値を0に置き換える方法はいくつかあります。ここでは、代表的な方法であるISNULL()関数とCASE式をご紹介します。ISNULL()関数は、最初の引数がNULLかどうかをチェックし、NULLの場合は2番目の引数を返します。...


      MySQLとMariaDBで知っておくべきSET NAMESとSET CHARSETの違いとは?

      SET NAMESとSET CHARSETは、どちらもMySQLとMariaDBでデータベース接続の文字セットを指定するために使用されるコマンドですが、微妙な違いがあります。SET NAMESクライアント接続の文字セットを指定します。データベース内のデータのエンコーディングを変更しません。...


      SQL SQL SQL Amazon で見る



      VPN、SSHポートフォワーディング、リモートデスクトップ:MariaDBへのリモートアクセス方法徹底比較

      Dockerで実行されているMariaDBにリモートアクセスするには、いくつかの方法があります。方法ポート公開 Dockerコンテナを作成時に、MariaDBのデフォルトポートである3306番ポートを公開します。 docker run -p 3306:3306 mariadb このコマンドを実行すると、コンテナ内の3306番ポートがホストマシンの3306番ポートに公開されます。 その後、ホストマシンから以下のコマンドを実行してMariaDBに接続できます。 mysql -h localhost -u root -p