Skip to main content

Fixed: "[Warning] [MY-010068] CA certificate is self signed" in MySQL

· 4 min read
Jagdish Kumawat
Founder @ Dewiride

CA certificate ca.pem is self signed turns up in MySQL's log every time it starts, and I went looking for what I'd done wrong. Nothing. Every root CA is self-signed, by definition, so MySQL's own automatic CA triggers it on a default install.

What I Was Doing​

I was reading MySQL 9.7's startup log, after giving it my own certificates:

Terminal
docker compose logs mysql

What I Expected​

No warnings.

What I Got​

Output
2026-11-06T06:26:44.390179Z 0 [Warning] [MY-010068] [Server] CA certificate /etc/mysql/certs/ca.pem is self signed.
2026-11-06T06:26:44.390231Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.

MySQL's log showing MY-010068: CA certificate is self signed, and MY-013602: Channel mysql_main configured to support TLS.

What I Checked​

The CA's issuer:

Terminal
openssl x509 -in ca.pem -noout -subject -issuer
Output
subject=CN=Inventory Demo CA
issuer=CN=Inventory Demo CA

The issuer and the subject are the same, and that's what self-signed means.

A default install. MySQL's automatic CA is the same: subject and issuer are both MySQL_Server_9.7.4_Auto_Generated_CA_Certificate.

Whether TLS works. The next line in the log says it does, and clients verifying that CA connect fine.

Why It Happens​

Somebody has to sign a root CA, and there's no one above it, so it signs itself. Public CAs are the same: you trust them because your operating system ships with them. A private CA is trusted because you give its file to your clients.

The Fix​

There's nothing to fix for a private CA. Make sure of one thing: your clients have that CA file, and use VerifyCA or VerifyFull. How to Verify a MySQL Server Certificate in .NET C# with VerifyCA shows it for .NET.

After the Fix​

No change to the log, and a client that checks the CA connects:

Terminal
dotnet run test-connection.cs
Output
Connected as inventory_app@% to MySQL 9.7.4
TLS: TLSv1.2

A client with SslMode=VerifyCA and that CA file printing Connected as inventory_app@% with TLS: TLSv1.2.

Common Mistakes​

MistakeWhat happensDo this instead
Treating every [Warning] as an errorYou chase nothingRead which one it is
Missing the warnings that do matterMY-015011 sits right beside itCheck for that one

Troubleshooting​

SymptomLikely causeFix
Failed to validate certificate in the same logThat one is a real problemThe fix
A client refuses the connectionIt doesn't have this CA fileGive it the CA

Conclusion​

MY-010068 is normal for a private CA: root CAs sign themselves. Keep the warning, give your clients the CA file, and watch for the warnings that mean something.

Additional Resources​

Stay Updated

Subscribe to our newsletter for the latest tutorials, tech insights, and developer news.

By subscribing, you agree to our privacy policy. Unsubscribe at any time.