DSN Format
MariaDB connection strings use themariadb:// protocol:
Basic Examples
Connection Options
SSL/TLS Modes
MariaDB supports SSL configuration via thesslmode query parameter:
Timeouts
Configure connection and query timeouts via TOML:mariadb library (src/connectors/mariadb/index.ts:53-58).
AWS RDS IAM Authentication
The connector automatically detects AWS IAM authentication tokens:- Automatically enables SSL (required for IAM authentication)
- Sets
rejectUnauthorized: falsefor RDS certificates
mysql_clear_password in default permitted plugins, so no additional configuration is needed.
Supported Features
Schemas (Databases)
In MariaDB, “schema” and “database” are synonymous (MySQL-compatible behavior). List all databases:Tables and Views
Get tables in a database:DATABASE() function to get the current active database.
Table Schema with Comments
MariaDB supports column comments (MySQL-compatible):Indexes
MariaDB indexes include:- Primary keys (
is_primary: true, index name isPRIMARY) - Unique indexes (
is_unique: true) - Multi-column indexes
- Full-text indexes
- Spatial indexes
Stored Procedures and Functions
MariaDB supports both stored procedures and functions:SHOW CREATE PROCEDURE/SHOW CREATE FUNCTIONINFORMATION_SCHEMA.ROUTINES.ROUTINE_DEFINITIONINFORMATION_SCHEMA.ROUTINES.ROUTINE_BODY
Table Comments
Retrieve table-level comments:Query Execution
Parameterized Queries
MariaDB uses? placeholders for parameters:
Multi-Statement Support
MariaDB has native multi-statement support enabled by default:- SELECT results are aggregated into
rows - INSERT/UPDATE/DELETE counts are summed in
rowCount
Session Consistency
The connector uses dedicated connections from the pool for session consistency:Row Limiting
Applies database-native LIMIT clause for efficiency:MariaDB vs MySQL
While MariaDB maintains MySQL compatibility, it offers several enhancements:Performance
- Aria storage engine: Crash-safe MyISAM replacement
- Better query optimizer: More advanced optimization strategies
- Thread pool: Improved handling of concurrent connections
Features
- Temporal tables: System-versioned tables for historical data
- JSON functions: Enhanced JSON support
- Sequences: Auto-increment alternative with more control
- Window functions: Available in earlier versions than MySQL
Compatibility
- Protocol-compatible with MySQL clients
- Most MySQL queries work without modification
- Uses same
INFORMATION_SCHEMAstructure
Common Scenarios
Connect to Local MariaDB
Connect to AWS RDS MariaDB
Option 1: Standard AuthenticationConnect Through SSH Tunnel
Work with Multiple Databases
MariaDB-Specific SQL Examples
Temporal Tables (System Versioning)
JSON Functions
Sequences
Window Functions
CTEs with Recursive Queries
Troubleshooting
Connection Refused
Error:connect ECONNREFUSED 127.0.0.1:3306
Solutions:
- Verify MariaDB is running:
systemctl status mariadb - Check bind-address in
/etc/mysql/mariadb.conf.d/50-server.cnf - Verify firewall rules
- Test with mariadb client:
mariadb -h localhost -u user -p
Authentication Failed
Error:Access denied for user 'username'@'host'
Solutions:
- Verify username and password
- Check user privileges:
- Grant access if needed:
SSL Connection Required
Error:SSL connection error
Solution: Add ?sslmode=require to your DSN:
Plugin Not Loaded
Error:Plugin 'auth_plugin' is not loaded
Solutions:
- Use standard authentication:
- Or install required plugin in MariaDB configuration
Database Not Selected
Error:No database selected
Solutions:
- Specify database in DSN:
mariadb://user:pass@host:3306/mydb - Or use fully qualified table names:
database.table
Performance Tips
- Use connection pooling (enabled by default in connector)
- Use Aria storage engine for better crash recovery than MyISAM
- Enable thread pool for high-concurrency workloads
- Use EXPLAIN to analyze query performance
- Create appropriate indexes for frequently queried columns
- Use prepared statements via parameterized queries
- Consider temporal tables for audit trails instead of trigger-based solutions
- Use sequences instead of AUTO_INCREMENT for better control