CertGrid CertGrid

MySQL

Install, secure and operate MySQL services.

45 published guides

30 of 45 guides need path access. Unlock MySQL path

45-guide MySQL learning path · 45 published · about 654 min of reading · 10 learning tracks · reviewed 27 August 2026

Foundations5 guides

Install it, secure it, and connect for the first time.

  1. Installation 14 min

    MySQL Installation on Ubuntu 26.04

    One apt command installs MySQL 8.4 and starts it.

    Updated 27 Aug 2026

  2. Configuration 15 min

    MySQL Secure Installation and Password Validation

    The four things mysql_secure_installation is famous for are already done on Ubuntu - the transcript shows no anonymous users, no test database and root bound to localhost.

    Updated 27 Aug 2026

  3. Hands-on Lab 13 min

    MySQL Command-Line Client

    The same query, four ways: a box-drawn table, tab-separated for scripts, one field per line, and a file piped in.

    Updated 27 Aug 2026

  4. Troubleshooting 18 min

    MySQL Local and Remote Connections

    A connection from another host fails twice, with two different errors and two different causes: 2003 because the server is not listening, then 1130 because the account does not exist for that host.

    Updated 27 Aug 2026

  5. Troubleshooting 16 min

    MySQL Service Management and Startup Failures

    Stopping MySQL removes its socket directory, which is why ERROR 2002 names a file that is not there.

    Updated 27 Aug 2026

Schemas and Data5 guides

Databases, tables, engines, charsets and the SQL that moves data.

  1. Hands-on Lab 14 min

    MySQL Databases and Tables

    Create a database, name its character set explicitly, then read the table back with SHOW CREATE TABLE - which shows every default MySQL filled in that you did not type, and is the only honest answer to what a table actually is.

    Updated 27 Aug 2026

  2. Troubleshooting 15 min

    MySQL Data Types and Constraints

    Three inserts that fail, each for a different reason and with a different error number.

    Updated 27 Aug 2026

  3. Hands-on Lab 12 min

    MySQL UPDATE and DELETE

    Change a row by reading its current value in the same statement, then remove one.

    Updated 27 Aug 2026

  4. Hands-on Lab 15 min

    MySQL SELECT, Joins and Aggregation

    One query answering a real question - how many orders each customer has and what they spent - and the two choices in it that decide whether customers with no orders appear at all.

    Updated 27 Aug 2026

  5. Troubleshooting 16 min

    MySQL Foreign Keys and ALTER TABLE

    A foreign key refuses in both directions - an order for a customer who does not exist, and deleting a customer who still has orders.

    Updated 27 Aug 2026

Configuration5 guides

my.cnf, the buffer pool, and the settings that decide behaviour.

  1. Configuration 13 min Paid

    MySQL Configuration Files and Load Order

    MySQL reads several files in a fixed order and the last one wins.

    Updated 27 Aug 2026

  2. Configuration 14 min Paid

    MySQL Server Variables

    Some variables change on a running server, some need a restart, and some cannot change at all. SET GLOBAL tells you which is which - and a restart shows what it did not save.

    Updated 27 Aug 2026

  3. Troubleshooting 16 min Paid

    MySQL Persisted Configuration

    SET PERSIST writes to a JSON file the server owns, and that value outranks your config file.

    Updated 27 Aug 2026

  4. Configuration 14 min Paid

    MySQL Buffer Pool and Connection Limits

    The two settings worth touching before any others, what they cost, and how to set them so they survive - on a 4 GB host where getting the buffer pool wrong takes the machine down rather than making it slow.

    Updated 27 Aug 2026

  5. Concepts 15 min Paid

    MySQL SQL Mode and Strict Behaviour

    sql_mode decides whether bad data is an error or a silent correction.

    Updated 27 Aug 2026

Users and Privileges5 guides

Accounts, grants, authentication plugins and TLS.

  1. Hands-on Lab 12 min Paid

    MySQL User Accounts

    A new account can connect and can see almost nothing.

    Updated 27 Aug 2026

  2. Hands-on Lab 13 min Paid

    MySQL Privileges and GRANT

    Grant SELECT on one schema and the account can read it and nothing else.

    Updated 27 Aug 2026

  3. Hands-on Lab 12 min Paid

    MySQL Column-Level Privileges

    Grant SELECT on three named columns and the account can read those three.

    Updated 27 Aug 2026

  4. Troubleshooting 16 min Paid

    MySQL Roles and Default Roles

    A role is granted, the account still cannot read the schema, and SET ROLE in the same command does not help - because the database is selected before the role is activated. SET DEFAULT ROLE is the fix, and nothing in the error says so.

    Updated 27 Aug 2026

  5. Hands-on Lab 13 min Paid

    MySQL Account Locking, Revocation and Removal

    Locking an account is reversible and keeps its grants; dropping it is neither. ERROR 3118 is what a locked account looks like from outside, and it is distinct from a wrong password.

    Updated 27 Aug 2026

Backup and Restore5 guides

mysqldump, the binary log, and recovery to a point in time.

  1. Hands-on Lab 13 min Paid

    MySQL Logical Backups with mysqldump

    A dump is a text file of SQL statements that rebuilds the database. --single-transaction is the flag that makes it consistent without locking anyone out, and it is the one most people leave off.

    Updated 27 Aug 2026

  2. Hands-on Lab 14 min Paid

    MySQL Dump Restore

    The database is dropped for real, the client returns ERROR 1049, and the dump brings back all five customers and three orders.

    Updated 27 Aug 2026

  3. Hands-on Lab 11 min Paid

    MySQL Partial and Schema-Only Dumps

    Dump one table, or the structure with no rows at all. --no-data produces a file with zero INSERT statements - useful for a schema diff, and catastrophic if you thought it was your backup.

    Updated 27 Aug 2026

  4. Concepts 14 min Paid

    MySQL Binary Log

    Every change is written to the binary log before it reaches you.

    Updated 27 Aug 2026

  5. Troubleshooting 18 min Paid

    MySQL Point-in-Time Recovery

    A dump restores last night.

    Updated 27 Aug 2026

Replication5 guides

A replica that keeps up, a failover that works, and GTIDs.

  1. Configuration 15 min Paid

    MySQL Replication Prerequisites

    Three servers, three unique ids, GTID on everywhere and one account with exactly one privilege.

    Updated 27 Aug 2026

  2. Hands-on Lab 16 min Paid

    MySQL Replica Seeding

    A replica has to start from a known point, not an empty database.

    Updated 27 Aug 2026

  3. Hands-on Lab 15 min Paid

    MySQL Replication Startup

    Point the replica at the source, start it, and read the five fields of SHOW REPLICA STATUS that actually matter.

    Updated 27 Aug 2026

  4. Troubleshooting 15 min Paid

    MySQL Replica Write Protection

    A fresh replica is not read-only.

    Updated 27 Aug 2026

  5. Troubleshooting 18 min Paid

    MySQL Replication Failure and Failover

    A local write on a replica collides with the source's next insert and replication stops with Last_SQL_Errno: 1062.

    Updated 27 Aug 2026

Performance5 guides

The slow query log, EXPLAIN, and indexes that are actually used.

  1. Hands-on Lab 16 min Paid

    MySQL Query Plans with EXPLAIN

    EXPLAIN shows what the optimizer intends; EXPLAIN ANALYZE runs it and reports what happened.

    Updated 27 Aug 2026

  2. Hands-on Lab 18 min Paid

    MySQL Indexes, Selectivity and Skip Scan

    A composite index takes the query from 57.4ms to 20.7ms - a 2.8x improvement, not the 100x the articles promise.

    Updated 27 Aug 2026

  3. Configuration 14 min Paid

    MySQL Slow Query Log

    Off by default, on in one statement, and the field that matters is not Query_time but Rows_examined - 400,000 rows read to return 1 is the signature of a missing index.

    Updated 27 Aug 2026

  4. Concepts 14 min Paid

    MySQL Buffer Pool in Practice

    A 99.948% hit rate sounds excellent and means almost nothing on its own - the dataset fits in the pool, so of course it does.

    Updated 27 Aug 2026

  5. Troubleshooting 19 min Paid

    MySQL Locks, Blocking and Deadlocks

    One transaction holds a row lock, another waits and dies with ERROR 1205.

    Updated 27 Aug 2026

Troubleshooting5 guides

It will not start, it will not connect, it will not keep up.

  1. Troubleshooting 14 min

    MySQL Connection Limit Failures

    ERROR 1040 is almost never a sign that you need more connections.

    Updated 27 Aug 2026

  2. Troubleshooting 13 min

    MySQL Runaway Queries and KILL

    KILL QUERY stops the statement and leaves the connection alive; KILL drops the whole connection and rolls back its transaction.

    Updated 27 Aug 2026

  3. Troubleshooting 15 min

    MySQL Metadata Locks and Blocked DDL

    An ALTER TABLE hangs behind a transaction that only ever ran a SELECT.

    Updated 27 Aug 2026

  4. Troubleshooting 16 min

    MySQL Crash Recovery

    kill -9 on the server, and 400,000 rows are still there afterwards.

    Updated 27 Aug 2026

  5. Concepts 14 min

    MySQL Diagnostic Toolkit

    Where to look, in what order, when something is wrong: the error log for the server, the process list for now, status variables for since-startup, and performance_schema for the detail underneath.

    Updated 27 Aug 2026

Monitoring and Operations5 guides

performance_schema, status counters and what to watch.

  1. Concepts 13 min Paid

    MySQL Health Checks

    Seven counters that describe a server's health, and the two that quietly predict trouble: temporary tables spilling to disk, and joins running with no index at all.

    Updated 27 Aug 2026

  2. Hands-on Lab 12 min Paid

    MySQL Table Sizes and Growth

    information_schema reports table sizes, and TABLE_ROWS is an estimate that was wrong every time it was read here.

    Updated 27 Aug 2026

  3. Hands-on Lab 15 min Paid

    MySQL Fragmentation and OPTIMIZE TABLE

    A third of the rows deleted and the table is exactly as large as before - 20.5 MB either way.

    Updated 27 Aug 2026

  4. Hands-on Lab 12 min Paid

    MySQL Integrity and Upgrade Checks

    CHECK TABLE verifies structure and indexes; mysqlcheck --check-upgrade finds what an upgrade would object to.

    Updated 27 Aug 2026

  5. Concepts 14 min Paid

    MySQL Replication Topology Monitoring

    SHOW REPLICA STATUS says replication is running.

    Updated 27 Aug 2026

← Back to Learn