Professional database migration tool with modern GUI, designed to safely and efficiently migrate data from legacy hosting systems to Laravel 11.
- Multiple data sources: Support direct database connection or SQL file import
- Comprehensive migration: Migrate users, admins, accounts, tickets, SSL certificates
- Batch processing: Process data in batches for optimal performance
- Auto-retry: Automatic retry on errors
- Password generation: Automatically generate strong passwords for all users
- Bcrypt hashing: Password encryption using bcrypt (10 rounds)
- Secure export: Security warnings when exporting sensitive data
- Activity logging: Complete logging of all activities
- SMTP integration: Full support for all SMTP providers
- Batch email: Send emails in batches with customizable delay
- Customizable templates: Email templates can be customized
- Delivery tracking: Track email sending status
- Real-time progress: Real-time progress tracking
- Detailed dashboard: Detailed statistics by category
- Export reports: Export reports in multiple formats (JSON, CSV, TXT)
- Advanced logging: System logs with multiple levels (INFO, WARNING, ERROR, SUCCESS)
- Dark theme: Modern dark interface, easy on the eyes
- Responsive design: Automatically adjusts to window size
- Modern navigation: Intuitive sidebar navigation
- Color-coded status: Clear color coding for different statuses
- Version: Python 3.7 or higher
- Packages: Tool will automatically install required packages
- Source: MySQL/MariaDB (old database)
- Target: MySQL/MariaDB (Laravel 11 database)
- Permissions: SELECT on source, INSERT/UPDATE on target
- SMTP server: Gmail, Outlook, or other SMTP server
- Authentication: Username/password or App Password
# Clone repository or download migration.py file
wget https://your-repo/migration.py
# or
git clone https://your-repo/bixa-migration-tool.git
cd bixa-migration-toolpython migration.pyThe tool will automatically:
- Check and install required dependencies
- Launch the graphical interface
- Display dependency status
Tool will automatically install:
mysql-connector-python: MySQL connectionPyMySQL: Alternative MySQL connectorbcrypt: Password hashing
- Open "βοΈ Configuration" tab
- Select "Connect to Database Directly"
- Fill in Old Database (Source) information:
- Host: IP/hostname of old database
- Port: 3306 (default)
- Database: Old database name
- Username: User with SELECT permissions
- Password: Database password
- Click "π Test Connection" to verify
- Select "Import from SQL File"
- Click "π Browse" to select SQL dump file
- Click "π Test SQL File" to parse and check data
- Tool will display statistics of found data
- Fill in New Database (Target) information:
- Host: IP/hostname of Laravel database
- Port: 3306 (default)
- Database: Laravel database name
- Username: User with INSERT/UPDATE permissions
- Password: Database password
- Click "π Test Connection" to verify
- Batch Size: Number of records processed per batch (default: 100)
- User Password Length: Password length for users (default: 12)
- Admin Password Length: Password length for admins (default: 14)
- Switch to "π Migration" tab
- Click "π Start Full Migration"
- Monitor progress through progress bars
- View detailed logs in "π Logs" tab
- Open "π§ Email Setup" tab
- Configure SMTP settings:
- SMTP Host: smtp.gmail.com (for Gmail)
- Port: 587 (for TLS)
- Username: Email address
- Password: App password (not regular password)
- From Email: Sender email
- From Name: Display name
- Click "π§ͺ Test SMTP Connection"
- Adjust Email Settings:
- Batch Size: Number of emails sent per batch
- Delay: Delay time between batches (seconds)
- Click "π§ Send All Password Emails"
- Confirm in dialog
- Monitor email sending progress
- View statistics in "π Dashboard" tab
- Export report: "π Export Report"
- Export password list: "π Export Passwords" (handle with care!)
is_user -> users (role: 'user')
is_admin -> users (role: 'admin')
is_account -> accounts
is_ticket -> tickets
is_ssl -> ssl_certificatesusers:
- id (auto increment)
- name (from user_name/admin_name)
- email (from user_email/admin_email)
- password (bcrypt hashed)
- role ('user' or 'admin')
- email_verified_at
- created_at (from user_date/admin_date)
- updated_atHost: smtp.gmail.com
Port: 587
Username: your-email@gmail.com
Password: your-app-password (16 characters)
Host: smtp-mail.outlook.com
Port: 587
Username: your-email@outlook.com
Password: your-password
Host: your-smtp-server.com
Port: 587/465/25
Username: your-username
Password: your-password
Tool can save/load config in JSON format:
{
"source_type": "database",
"old_database": {
"host": "localhost",
"port": "3306",
"database": "old_hosting_db",
"username": "user",
"password": "password"
},
"new_database": {
"host": "localhost",
"port": "3306",
"database": "laravel_db",
"username": "user",
"password": "password"
},
"smtp": {
"host": "smtp.gmail.com",
"port": "587",
"username": "admin@yoursite.com",
"password": "app-password",
"from_email": "admin@yoursite.com",
"from_name": "Migration Tool"
},
"settings": {
"batch_size": "100",
"user_pwd_length": "12",
"admin_pwd_length": "14",
"email_batch_size": "50",
"email_delay": "2"
}
}- Generation: Uses Python's
secretsmodule - Character set: Letters, numbers, and special characters (!@#$%^&*)
- Hashing: Bcrypt with 10 rounds salt
- Storage: Plain text only stored in memory, export has security warnings
- Database connections: Uses parameterized queries
- Log files: Do not contain passwords
- Export files: Clear security warnings
- Memory: Clear password data after sending emails
- SMTP: Supports TLS/SSL encryption
- Database: Connection over secure ports
- No data transmission: Tool runs locally, no data sent elsewhere
# If auto-install fails, install manually:
pip install mysql-connector-python PyMySQL bcrypt
# Or with Python 3:
pip3 install mysql-connector-python PyMySQL bcrypt- Check firewall: Ensure port 3306 is open
- Check privileges: User needs appropriate permissions
- Check MySQL version: Tool supports MySQL 5.7+
- Test with MySQL client: Try connecting with mysql command line
- Gmail: Must use App Password, not regular password
- 2FA: If 2FA is enabled, App Password is mandatory
- Firewall: Check if port 587/465 is blocked
- Rate limiting: Reduce batch size and increase delay
- Large datasets: Increase batch size if database is powerful
- Memory issues: Reduce batch size if running low on RAM
- Timeout: Check connection timeout settings
- Duplicate data: Tool automatically skips duplicate emails
- Database: Create indexes on email columns
- Network: Run tool close to database server
- Resources: Ensure sufficient RAM and CPU
- Batch size: Adjust according to hardware capabilities
- β User accounts (is_user table)
- β Admin accounts (is_admin table)
- β Email addresses (validation included)
- β User status (active/inactive)
- β Registration dates
- β Password generation and hashing
- β Hosting accounts (is_account)
- β Support tickets (is_ticket)
- β SSL certificates (is_ssl)
- GitHub: Bixacloud/bixa
- Telegram: @bixacloud
When reporting bugs, please provide:
- Error message: Copy full error from logs
- Environment: OS, Python version
- Database info: MySQL version, table structure
- Steps to reproduce: Steps leading to the error
- Log files: Attach migration.log file
- Create issue on GitHub with "enhancement" label
- Describe the needed feature in detail
- Explain use case and benefits
MIT License - see LICENSE file for details.
- β Real SQL file parsing implementation
- β Fixed user migration with actual database operations
- β Improved error handling and logging
- β Enhanced UI with progress tracking
- β Auto-dependency installation
π― Best Practice: Test with a small sample before running full-scale migration.
π Support: Contact via Telegram @bixacloud if you need assistance.