# DataGrip / MySQL Client Setup ## TiDB Connection Details Your local TiDB instance is ready for DataGrip or any MySQL-compatible client! ### Connection Settings | Setting | Value | |---------|-------| | **Host** | `127.0.0.1` or `localhost` | | **Port** | `4000` | | **User** | `root` | | **Password** | _(leave empty)_ | | **Database** | _(optional, or specify your synced database)_ | ## DataGrip Configuration ### 1. Create New Data Source 1. Open DataGrip 2. Click **+** (New) → **Data Source** → **MySQL** 3. Enter connection details: - **Host:** `127.0.0.1` - **Port:** `4000` - **Authentication:** User & Password - **User:** `root` - **Password:** _(leave empty)_ - **Database:** `your_database` (or leave empty to see all databases) ### 2. Driver Configuration - DataGrip will automatically use the MySQL driver - TiDB is MySQL protocol-compatible, so no special driver needed - If prompted, download the MySQL JDBC driver ### 3. Test Connection Click **Test Connection** to verify: - ✅ Should show "Successful" if TiDB is running - ❌ If failed, ensure TiDB is running: `docker ps | grep tidb` ### 4. Advanced Settings (Optional) **URL Template:** ``` jdbc:mysql://127.0.0.1:4000 ``` **Connection Properties (optional):** - `useSSL=false` (for local development) - `serverTimezone=UTC` - `allowPublicKeyRetrieval=true` Full URL example: ``` jdbc:mysql://127.0.0.1:4000?useSSL=false&serverTimezone=UTC ``` ## Other MySQL Clients ### MySQL Command Line ```bash mysql -h 127.0.0.1 -P 4000 -u root ``` ### MySQL Workbench - Connection Method: Standard TCP/IP - Hostname: `127.0.0.1` - Port: `4000` - Username: `root` - Password: _(leave empty)_ ### DBeaver - Database: MySQL - Server Host: `127.0.0.1` - Port: `4000` - Username: `root` - Password: _(leave empty)_ ### TablePlus - Connection Type: MySQL - Host: `127.0.0.1` - Port: `4000` - User: `root` - Password: _(leave empty)_ ## Verifying Your Synced Data Once connected, run these queries to check your synced data: ```sql -- Show all databases SHOW DATABASES; -- Switch to your synced database USE your_database; -- Show tables SHOW TABLES; -- Check table data SELECT * FROM table1 LIMIT 10; -- Check table structure DESCRIBE table1; -- Show table row count SELECT COUNT(*) FROM table1; ``` ## Troubleshooting ### Connection Refused ```bash # Check if TiDB is running docker ps | grep tidb # Check TiDB logs docker logs tidb # Restart if needed docker compose restart tidb ``` ### Can't See Synced Data ```bash # Check DM sync status ./status.sh # Or manually: docker exec dm-master /dmctl --master-addr=dm-master:8261 query-status test-to-local ``` ### Port Already in Use If port 4000 is already taken, you can change it in `docker-compose.yml`: ```yaml services: tidb: ports: - "14000:4000" # Change host port to 14000 ``` Then connect to `127.0.0.1:14000` instead. ## Quick Verification After starting your environment and connecting with DataGrip: 1. **Check if sync is working:** ```sql -- In DataGrip, run: SELECT DATABASE(); SHOW DATABASES LIKE 'your_database'; ``` 2. **Compare record counts:** ```sql -- In DataGrip (local TiDB) SELECT COUNT(*) FROM your_database.table1; -- Compare with test environment to verify sync ``` 3. **Check data freshness:** ```sql -- If your table has timestamps SELECT MAX(updated_at) FROM your_database.table1; ``` ## Tips for DataGrip - **Auto-sync schema:** Right-click database → Synchronize to refresh - **Multiple connections:** You can add both test and local TiDB for comparison - **Query console:** Use separate consoles for different environments - **Data comparison:** Use DataGrip's compare feature to verify sync accuracy ## Security Note ⚠️ This setup uses no password for local development convenience. For production: - Set a strong password for TiDB - Enable SSL/TLS - Use proper network isolation