MySQL: ERROR 2026 (HY000): SSL connection error: SSL is required but the server doesn't support it
The client demanded SSL/TLS (--ssl-mode=REQUIRED) but the MySQL server has TLS disabled or no certificates configured.
SSL connection error: SSL is required but the server doesn't support itERROR 2026 (HY000): SSL connection errorSSL connection error: unknown error numberERROR 2026 (HY000): TLS/SSL error: SSL is required, but the server does not support itSSL is required but the server doesn't support it Meaning
Enable TLS on the server (ssl_ca, ssl_cert, ssl_key, or auto-generated certs in MySQL 5.7+ / require_secure_transport), or connect with --ssl-mode=DISABLED on trusted local networks. Also appears with MySQL 8 clients vs MariaDB servers and with expired auto-generated certs.
Common causes
- Server started without TLS files
- MariaDB server with a MySQL 8 client default REQUIRED mode
- Certificates missing or unreadable by mysqld
- Expired auto-generated server certs
- Wrong
ssl-modein connection string
⚡ Quick fix
- Check
SHOW VARIABLES LIKE '%ssl%'on the server - Configure
ssl_ca/ssl_cert/ssl_keyand restart - Use
--ssl-mode=PREFERREDor DISABLED for local development
Detailed fix by platform
MySQL
SHOW VARIABLES LIKE 'have_ssl';and\sin the client shows the cipher in use
How to diagnose
- Server — have_ssl YES?
- Client — ssl-mode setting?
- Cert files — Valid and readable?
🔧 Still not fixed?
Many errors look alike. If the steps above didn’t solve it, one of these is probably what you’re facing:
Similar errors
- AH01909: server certificate does NOT include an ID which matches the server name Apache: [ssl:warn] AH01909: example.com:443:0 server certificate does NOT include an ID which matches the server name
- CAA record forbids issuance Let's Encrypt/CA: CAA record for example.com prevents issuance
- root certificate file "root.crt" does not exist PostgreSQL: root certificate file "/home/user/.postgresql/root.crt" does not exist. Either provide the file or change sslmode
Most viewed in SSL / TLS
- NET::ERR_CERT_COMMON_NAME_INVALID NET::ERR_CERT_COMMON_NAME_INVALID: Your connection is not private (certificate is for a different domain)
- Challenge failed for domain Let’s Encrypt / Certbot: Challenge failed for domain example.com — Invalid response from http://example.com/.well-known/acme-challenge/x: 404
- no start line OpenSSL: unable to load certificate / PEM routines:get_name:no start line (key values mismatch)
Other ways to find it
Where this error sits
Origin: Network. Errors that are often confused with or caused by this one (click to open):
🧠 Still stuck? Analyze your error
Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.
💬 What worked for others
No tips yet — did something else fix this for you?
Share what worked for you
Tips are checked by an editor before they appear. Links are removed.
Report a correction or suggest an improvement
Last updated 4 Nov 2026