Production checklist

MySQL / MariaDB production checklist: 6 checks before launch

6 checks for running MySQL / MariaDB in production: 1 must-do, 4 should-dos and 1 good-to-have. Each one says why it matters, how to verify it and where the docs are.

Updated . Every check links the vendor’s own docs.

Check my repo

Must do (1)

  • Automated backups with binary logs for point-in-time recovery

    Lets you restore to just before a bad migration or deletion.

    Verify with SQL

    log_bin should be ON and binary logs should be listed; check your backups keep them. Restore into a scratch server once.

    SHOW VARIABLES LIKE 'log_bin';
    SHOW BINARY LOGS;

    Read more on dev.mysql.com

Should do (4)

  • Require encrypted connections

    Credentials and data otherwise cross the network in plain text.

    Verify with SQL

    require_secure_transport should be ON, so the server refuses unencrypted connections.

    SHOW VARIABLES LIKE 'require_secure_transport';

    Read more on dev.mysql.com

  • Give the app user only the privileges it needs

    Limits what an injection bug can do.

    Verify with SQL

    Run this as the app’s user. A pass: privileges on the app’s own database only, with no ALL PRIVILEGES ON *.*, SUPER or GRANT OPTION.

    SHOW GRANTS FOR CURRENT_USER();

    Read more on dev.mysql.com

  • Remove anonymous accounts and the test database

    Default installs can ship with an anonymous user and a test database anyone can write to.

    Verify with SQL

    Both queries should return no rows.

    SELECT user, host FROM mysql.user WHERE user = '';
    SHOW DATABASES LIKE 'test';

    Read more on dev.mysql.com

  • Keep MySQL off the public internet

    Port 3306 open to the world invites password guessing and lets any server exploit reach it.

    Verify with SQL

    bind_address should be a private address, not 0.0.0.0 or *. On a managed service, the instance shouldn’t be publicly accessible. From outside your network, a connection to port 3306 should time out.

    SHOW VARIABLES LIKE 'bind_address';

    Read more on dev.mysql.com

Good to have (1)

  • Turn on the slow query log

    Shows the queries that will fall over first as tables grow, before users notice.

    Verify with SQL

    slow_query_log should be ON with a long_query_time that suits your app (for example 1 second).

    SHOW VARIABLES LIKE 'slow_query_log%';
    SHOW VARIABLES LIKE 'long_query_time';

    Read more on dev.mysql.com

Get the checklist for your whole stack

Design your stack or map your repo in StackPrism, and the Improve panel lists the checks for every technology on it and keeps track of what you’ve done. Building with an AI app builder? Start with the vibe coding checklist.