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.
-
Installation 14 min
MySQL Installation on Ubuntu 26.04
One apt command installs MySQL 8.4 and starts it.
Updated 27 Aug 2026
-
Configuration 15 min
MySQL Secure Installation and Password Validation
The four things
mysql_secure_installationis 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
-
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
-
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
-
Troubleshooting 16 min
MySQL Service Management and Startup Failures
Stopping MySQL removes its socket directory, which is why
ERROR 2002names a file that is not there.Updated 27 Aug 2026
Schemas and Data5 guides
Databases, tables, engines, charsets and the SQL that moves data.
-
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
-
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
-
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
-
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
-
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.
-
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
-
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 GLOBALtells you which is which - and a restart shows what it did not save.Updated 27 Aug 2026
-
Troubleshooting 16 min Paid
MySQL Persisted Configuration
SET PERSISTwrites to a JSON file the server owns, and that value outranks your config file.Updated 27 Aug 2026
-
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
-
Concepts 15 min Paid
MySQL SQL Mode and Strict Behaviour
sql_modedecides whether bad data is an error or a silent correction.Updated 27 Aug 2026
Users and Privileges5 guides
Accounts, grants, authentication plugins and TLS.
-
Hands-on Lab 12 min Paid
MySQL User Accounts
A new account can connect and can see almost nothing.
Updated 27 Aug 2026
-
Hands-on Lab 13 min Paid
MySQL Privileges and GRANT
Grant
SELECTon one schema and the account can read it and nothing else.Updated 27 Aug 2026
-
Hands-on Lab 12 min Paid
MySQL Column-Level Privileges
Grant
SELECTon three named columns and the account can read those three.Updated 27 Aug 2026
-
Troubleshooting 16 min Paid
MySQL Roles and Default Roles
A role is granted, the account still cannot read the schema, and
SET ROLEin the same command does not help - because the database is selected before the role is activated.SET DEFAULT ROLEis the fix, and nothing in the error says so.Updated 27 Aug 2026
-
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 3118is 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.
-
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-transactionis the flag that makes it consistent without locking anyone out, and it is the one most people leave off.Updated 27 Aug 2026
-
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
-
Hands-on Lab 11 min Paid
MySQL Partial and Schema-Only Dumps
Dump one table, or the structure with no rows at all.
--no-dataproduces a file with zero INSERT statements - useful for a schema diff, and catastrophic if you thought it was your backup.Updated 27 Aug 2026
-
Concepts 14 min Paid
MySQL Binary Log
Every change is written to the binary log before it reaches you.
Updated 27 Aug 2026
-
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.
-
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
-
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
-
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 STATUSthat actually matter.Updated 27 Aug 2026
-
Troubleshooting 15 min Paid
MySQL Replica Write Protection
A fresh replica is not read-only.
Updated 27 Aug 2026
-
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.
-
Hands-on Lab 16 min Paid
MySQL Query Plans with EXPLAIN
EXPLAINshows what the optimizer intends;EXPLAIN ANALYZEruns it and reports what happened.Updated 27 Aug 2026
-
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
-
Configuration 14 min Paid
MySQL Slow Query Log
Off by default, on in one statement, and the field that matters is not
Query_timebutRows_examined- 400,000 rows read to return 1 is the signature of a missing index.Updated 27 Aug 2026
-
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
-
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.
-
Troubleshooting 14 min
MySQL Connection Limit Failures
ERROR 1040is almost never a sign that you need more connections.Updated 27 Aug 2026
-
Troubleshooting 13 min
MySQL Runaway Queries and KILL
KILL QUERYstops the statement and leaves the connection alive;KILLdrops the whole connection and rolls back its transaction.Updated 27 Aug 2026
-
Troubleshooting 15 min
MySQL Metadata Locks and Blocked DDL
An
ALTER TABLEhangs behind a transaction that only ever ran aSELECT.Updated 27 Aug 2026
-
Troubleshooting 16 min
MySQL Crash Recovery
kill -9on the server, and 400,000 rows are still there afterwards.Updated 27 Aug 2026
-
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_schemafor the detail underneath.Updated 27 Aug 2026
Monitoring and Operations5 guides
performance_schema, status counters and what to watch.
-
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
-
Hands-on Lab 12 min Paid
MySQL Table Sizes and Growth
information_schemareports table sizes, andTABLE_ROWSis an estimate that was wrong every time it was read here.Updated 27 Aug 2026
-
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
-
Hands-on Lab 12 min Paid
MySQL Integrity and Upgrade Checks
CHECK TABLEverifies structure and indexes;mysqlcheck --check-upgradefinds what an upgrade would object to.Updated 27 Aug 2026
-
Concepts 14 min Paid
MySQL Replication Topology Monitoring
SHOW REPLICA STATUSsays replication is running.Updated 27 Aug 2026