Script Python untuk koneksi ke database MySQL melalui SSH tunnel. Berguna ketika database MySQL tidak dapat diakses langsung dari internet dan hanya bisa diakses melalui SSH server.
- Koneksi aman ke MySQL melalui SSH tunnel
- Support autentikasi SSH dengan password atau private key
- Class wrapper yang mudah digunakan
- Logging yang informatif
- Contoh operasi CRUD
- Penanganan error yang baik
- Install dependencies:
pip install -r requirements.txt
Option A: Local Config File (Development)
# Copy template dan edit dengan kredensial asli
cp config/config.py config/config_local.py
# Edit config_local.py dengan kredensial asli
# File ini sudah ada di .gitignore
Option B: Environment Variables (Production)
# Copy template dan edit dengan kredensial asli
cp .env.template .env
# Edit .env dengan kredensial asli
# File ini sudah ada di .gitignore
SSH_CONFIG = {
'host': 'your-server.com', # IP atau hostname server SSH
'port': 22, # Port SSH
'username': 'your_ssh_username', # Username SSH
'password': 'your_ssh_password', # Password SSH
}
MYSQL_CONFIG = {
'host': 'localhost', # Host MySQL di server remote
'port': 3306, # Port MySQL
'username': 'your_mysql_username', # Username MySQL
'password': 'your_mysql_password', # Password MySQL
'database': 'your_database_name', # Nama database
}
SSH_CONFIG = {
'host': 'your-server.com',
'port': 22,
'username': 'your_ssh_username',
'private_key_path': '/path/to/your/private/key',
'private_key_password': 'your_key_password', # jika private key punya password
}
# 1. Setup environment
.venv\Scripts\activate # Windows
pip install -r requirements.txt
# 2. Setup kredensial (untuk development)
cp config/config.py config/config_local.py # Edit dengan kredensial asli
# 3. Start Flask Web Interface
python run_flask_ui.py
# Browser akan otomatis terbuka ke http://127.0.0.1:5000
# Interface web yang user-friendly untuk MySQL SSH connections!
# 1. Setup environment
.venv\Scripts\activate # Windows
pip install -r requirements.txt
# 2. Setup kredensial (pilih salah satu)
cp config/config.py config/config_local.py # Edit dengan kredensial asli
cp .env.template .env # Edit dengan kredensial asli
# 3. Run aplikasi
python main.py
# Metode 1: Entry point utama
python main.py
# Metode 2: Alternative runner
python run_example.py
# Metode 3: Dari folder examples
cd examples && python example_usage.py
# Install dalam development mode
pip install -e .
# Run tests
python -m unittest discover tests
# Build package
python -m build
from src.database.mysql_ssh_connection import MySQLSSHConnection
from config.config import SSH_CONFIG, MYSQL_CONFIG
# Buat koneksi
mysql_ssh = MySQLSSHConnection(SSH_CONFIG, MYSQL_CONFIG)
if mysql_ssh.connect():
# Jalankan query
result = mysql_ssh.execute_query("SELECT * FROM users")
print(result)
# Tutup koneksi
mysql_ssh.close()
python example_usage.py
src/database/mysql_ssh_connection.py
- Class utama untuk koneksiconfig/config.py
- Konfigurasi SSH dan MySQLexamples/example_usage.py
- Contoh penggunaan dan testtests/test_mysql_ssh_connection.py
- Unit testsdocs/
- Dokumentasi lengkapmain.py
- Entry point utamarun_example.py
- Alternative runner untuk examples
result = mysql_ssh.execute_query("SELECT * FROM users WHERE id = %s", (1,))
mysql_ssh.execute_query(
"INSERT INTO users (name, email) VALUES (%s, %s)",
('John Doe', 'john@example.com')
)
mysql_ssh.execute_query(
"UPDATE users SET name = %s WHERE id = %s",
('New Name', 1)
)
mysql_ssh.execute_query("DELETE FROM users WHERE id = %s", (1,))
π Baca panduan lengkap: SECURITY.md
- Gunakan Private Key: Lebih aman dari password
- Environment Variables: Simpan kredensial di environment variables
- Config Local: Gunakan
config_local.py
untuk development - Never Commit Credentials: Jangan pernah commit kredensial ke repository
- Firewall: Pastikan server SSH dan MySQL dikonfigurasi dengan benar
- VPN: Pertimbangkan menggunakan VPN untuk keamanan ekstra
- Periksa hostname/IP dan port SSH
- Pastikan username dan password/private key benar
- Periksa firewall dan network connectivity
- Pastikan MySQL service berjalan di server
- Periksa username dan password MySQL
- Pastikan user MySQL memiliki permission yang cukup
- Periksa permission private key file (chmod 600)
- Pastikan user SSH memiliki akses ke server
2024-01-01 10:00:00 - mysql_ssh_connection - INFO - Membuat SSH tunnel...
2024-01-01 10:00:01 - mysql_ssh_connection - INFO - SSH tunnel berhasil dibuat di port lokal: 55432
2024-01-01 10:00:02 - mysql_ssh_connection - INFO - Menghubungkan ke MySQL database...
2024-01-01 10:00:03 - mysql_ssh_connection - INFO - Koneksi MySQL berhasil!
Dokumentasi lengkap tersedia di folder docs/
:
- π Security Guide - Panduan keamanan kredensial
- π Structure Guide - Struktur proyek dan organisasi
- π§ Build Setup - Setup system dan build tools
- π§ Import Solutions - Solusi masalah import
Created by Julian Sukrisna
- π§ Email: smallest87@gmail.com
- π GitHub: @smallest87
- π’ Organization: Javasatu.com
- π Created: August 2025
Baca cerita lengkap di balik pengembangan proyek ini di STORY.md - perjalanan profesional, tantangan ekonomi, dan visi masa depan proyek ini.
Proyek ini dikembangkan dengan dedikasi tinggi untuk memberikan solusi koneksi database yang aman dan profesional. Dalam masa ekonomi yang menantang, dukungan Anda sangat berarti untuk keberlanjutan pengembangan.
- Memastikan pemeliharaan dan keamanan berkelanjutan
- Mendukung pengembangan fitur-fitur baru
- Membantu stabilitas ekonomi developer di masa sulit
- Berkontribusi pada ekosistem open source Indonesia
- π³ Donasi: Lihat detail di SUPPORT.md
- β GitHub Star: Berikan star pada repository ini
- π’ Share: Bagikan ke developer lain
- π€ Contribute: Lihat CONTRIBUTING.md
Setiap dukungan, sekecil apapun, sangat berarti untuk keberlanjutan proyek ini. π
Ingin berkontribusi? Silakan baca CONTRIBUTING.md untuk guidelines development.
Lihat juga AUTHORS.md untuk daftar lengkap kontributor.
Project ini menggunakan MIT License.
Happy Coding! π