Linux環境でデータベースを操作:Raspberry PiでMariaDBサーバーへのリモートアクセス
Raspberry Pi で MySQL MariaDB サーバーへのリモートアクセスを可能にする
前提条件
- Raspberry Pi
- Raspberry Pi OS(Raspbian)
- SSH クライアント(例:PuTTY、Terminal)
手順
- MariaDB サーバーのインストール
sudo apt update
sudo apt install mariadb-server
初回起動時に、MariaDB サーバーはパスワードの設定を求めます。強力なパスワードを設定してください。
- リモート接続を許可する
以下のコマンドを実行して、MariaDB 設定ファイルを編集します。
sudo nano /etc/mysql/mariadb.cnf
ファイルを編集し、bind-address
行を以下のように変更します。
bind-address = 0.0.0.0
変更を保存してファイルを閉じます。
sudo systemctl restart mariadb
- ファイアウォール設定
UFW ファイアウォールを使用している場合は、以下のコマンドを実行して、3306 番ポートを開放する必要があります。
sudo ufw allow 3306
- リモートユーザーの作成
以下のコマンドを実行して、リモートからアクセスするための新しいユーザーを作成します。
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
は強力なパスワードに置き換えてください。
- リモート接続のテスト
リモートホストから、以下のコマンドを使用して 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()
説明
mysql.connector
モジュールをインポートします。- データベース接続情報(ホスト、ユーザー、パスワード、データベース名)を定義します。
mysql.connector.connect()
関数を使用して、データベースに接続します。cursor()
メソッドを使用して、データベース操作用のカーソルを作成します。- サンプルクエリを実行します。この例では、
my_table
テーブルにデータ行を挿入します。 close()
メソッドを使用して、カーソルとデータベース接続を閉じます。
- このコードはあくまで一例です。具体的な操作は、ご自身の要件に合わせて変更してください。
- エラー処理や接続プーリングなどの機能を追加することを検討してください。
- 詳細については、
mysql.connector
ドキュメントを参照してください。
Raspberry Pi で MariaDB サーバーへのリモートアクセスを可能にするその他の方法
phpMyAdmin は、Web ブラウザを使用して MariaDB サーバーを管理するためのオープンソースツールです。phpMyAdmin をインストールすると、リモートホストから Web ブラウザを使用してデータベースに接続、作成、編集、削除、エクスポート、インポートすることができます。
- Raspberry Pi に phpMyAdmin をインストールします。
sudo apt install phpmyadmin
- 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 プロンプトが表示されたら、データベース操作を実行できます。
- SSH トンネルを閉じるには、Ctrl + C キーを押します。
クラウドベースのソリューションを使用する
Amazon RDS や DigitalOcean Managed Databases など、クラウドベースのデータベースサービスを利用することもできます。これらのサービスを使用すると、Raspberry Pi 上に MariaDB サーバーをインストールおよび管理する必要がなく、リモートから簡単にアクセスできます。
最適な方法の選択
使用する方法は、要件とスキルレベルによって異なります。
- 初心者 の場合は、phpMyAdmin を使用するのが最も簡単です。
- セキュリティ が重要であれば、SSH トンネリングを使用してください。
- 柔軟性とスケーラビリティ が必要な場合は、クラウドベースのソリューションを検討してください。
mysql sql linux