mysqltuner(1)

mysqltuner(1) User Contributed Perl Documentation mysqltuner(1)

NAME

 MySQLTuner 2.9.2 - MySQL High Performance Tuning Advisor for MySQL, MariaDB, and Percona Server

SYNOPSIS

mysqltuner [OPTIONS]

  # Basic local execution using standard unix socket
  perl mysqltuner.pl
  # Remote TCP/IP connection with explicit credentials and forced memory sizing
  perl mysqltuner.pl --host 192.168.1.50 --port 3306 --user root --pass secret --forcemem 16G
  # Containerized database analysis via Docker/Podman
  perl mysqltuner.pl --container production_mysql_1 --user root --pass secret
  # Generate comprehensive interactive HTML diagnostic dashboard
  perl mysqltuner.pl --reportfile /var/www/html/tuner_report.html
  # Export schema markdown documentation per database
  perl mysqltuner.pl --schemadir /opt/db_docs/
  # AI Agent integration output (actionable JSON remediation plan)
  perl mysqltuner.pl --agent-json

IMPORTANT USAGE GUIDELINES

  • Production Stability: Run the script without modifying arguments first to review recommendations before applying changes.
  • Representative Workload: Allow your database server to run under normal production load for at least 24 to 48 hours before trusting metric ratios and sizing advice.
  • Privilege Requirements: Administrative read-only access ("SELECT", "PROCESS", "SHOW DATABASES", "REPLICATION CLIENT") is required for exhaustive diagnostics.
  • Remote Host Hardware Sizing: When connecting over TCP/IP or SSH to remote instances, specify host RAM via "--forcemem" (e.g., "--forcemem 32G") to ensure accurate buffer sizing recommendations.

OPTIONS

Connection and Authentication Options

--host hostname
Connect to remote MySQL/MariaDB server via TCP/IP hostname or IP address.
--port port
TCP/IP port number to connect to (default: 3306).
--socket socket_path
Path to local UNIX domain socket for database communication.
--user username
Database username for authentication.
--password password, --pass password
Database password for authentication.
--ask-pass
Prompt interactively for database password on the terminal.
--defaults-file path
Path to a custom MySQL configuration file (e.g., "~/.my.cnf").
--defaults-extra-file path
Path to an additional configuration file to read after standard defaults.
--login-path path
Read credentials from MySQL encrypted login path (via "mysql_config_editor").
--mysqlcmd path
Path to custom "mysql" client binary.
--mysqladmin path
Path to custom "mysqladmin" binary.
--tli
Use Transport Layer Interface abstraction.
--ssl-ca path
Path to SSL Certificate Authority (CA) certificate.
--caching-sha2-password
Force caching_sha2_password authentication plugin mode.

Target Environment and Cloud Discovery Options

--container container_name_or_id
Execute diagnostics inside a running Docker or Podman container.
--ssh-host hostname
Execute diagnostics over SSH remote transport.
--ssh-user username
SSH login username.
--ssh-key path
Path to SSH private key file.
--ssh-port port
SSH daemon port (default: 22).
--aws-profile profile
AWS CLI profile for Amazon RDS / Aurora cluster discovery.
--aws-region region
AWS Region for RDS / Aurora discovery.
--aws-cluster-identifier id
Amazon RDS / Aurora cluster identifier.
--aws-instance-identifier id
Amazon RDS instance identifier.
--gcp-project project_id
Google Cloud project ID for Cloud SQL instances.
--gcp-instance instance_id
Google Cloud SQL instance identifier.
--azure-resource-group group
Azure resource group for Azure Database for MySQL.
--azure-server-name name
Azure MySQL flexible/single server name.

Performance and Diagnostic Tuning Options

--forcemem size
Amount of physical RAM installed in host (e.g., "16G", "1024M", "128K").
--forceswap size
Amount of configured swap space on host (e.g., "4G", "2048M").
--skipworkload
Bypass high-cardinality table churn and auto-increment exhaustion checks.
--skippassword
Skip offline dictionary checks for weak user passwords.
--skipsize
Skip table size enumeration queries on "information_schema".
--buffers
Print detailed per-buffer memory allocations.
--cvefile path
Path to custom CVE vulnerabilities CSV database file.
--passwordfile path
Path to custom dictionary file for password audits.
--checkversion
Check for upstream MySQLTuner version updates.
--nondedicated
Adjust tuning formulas assuming the host runs non-database workloads.
--noprocess
Skip OS-level non-mysqld process enumeration.

Output and Export Options

--verbose, -v
Activate full verbose output including storage engines and table statistics.
--silent
Suppress standard console output.
--outputfile path
Save console report to plain text file.
--reportfile [path]
Generate interactive self-contained HTML diagnostic dashboard.
--json
Output raw diagnostic results as a JSON string.
--prettyjson
Output diagnostic results as formatted, indented JSON.
--agent-json
Output actionable AI remediation schema with SQL/config fixes and rollback statements.
--yaml
Output diagnostic metrics in YAML format.
--dumpdir path
Dump diagnostic data files and Markdown schema summaries to target directory.
--schemadir path
Export individual Markdown documentation files with Mermaid ER diagrams per schema.
--nocolor
Disable ANSI color codes in terminal output.
--noprettyicon
Use plain text markers ([OK], [!!], [--]) instead of Unicode icons.
--stage-timings
Display execution duration for each analysis stage.

Debugging and Filtering Options

--debug
Print internal debug traces and SQL query payloads.
--dbgpattern regex
Filter debug messages by regular expression pattern.
--nobad
Suppress negative findings and warning recommendations.
--nogood
Suppress positive / passing health checks.
--noinfo
Suppress informational messages.

VERSION

Version 2.9.2

PERLDOC

You can inspect the embedded manual with the perldoc command:

  perldoc mysqltuner.pl

INTERNALS

<https://github.com/jmrenouard/MySQLTuner-perl/blob/master/INTERNALS.md>

 Internal documentation

AUTHORS

Major Hayden - major@mhtx.net Jean-Marie Renouard - jmrenouard@gmail.com

CONTRIBUTORS

  • Matthew Montgomery
  • Paul Kehrer
  • Dave Burgess
  • Jonathan Hinds
  • Mike Jackson
  • Nils Breunese
  • Shawn Ashlee
  • Luuk Vosslamber
  • Ville Skytta
  • Trent Hornibrook
  • Jason Gill
  • Mark Imbriaco
  • Greg Eden
  • Aubin Galinotti
  • Giovanni Bechis
  • Bill Bradford
  • Ryan Novosielski
  • Michael Scheidell
  • Blair Christensen
  • Hans du Plooy
  • Victor Trac
  • Everett Barnes
  • Tom Krouper
  • Gary Barrueto
  • Simon Greenaway
  • Adam Stein
  • Isart Montane
  • Baptiste M.
  • Cole Turner
  • Daniel Lewart
  • Jason Gill
  • Jean-Marie Renouard
  • Major Hayden
  • Matthew Montgomery
  • Stephan GroBberndt
  • Christian Loos
  • Long Radix
  • derZ-dev

SUPPORT

Bug reports, feature requests, and downloads at http://mysqltuner.pl/

Bug tracker can be found at https://github.com/jmrenouard/MySQLTuner-perl/issues

Maintained by Jean-Marie Renouard (jmrenouard\@gmail.com) - Licensed under GPL

SOURCE CODE

<https://github.com/jmrenouard/MySQLTuner-perl/>

 git clone https://github.com/jmrenouard/MySQLTuner-perl/.git

COPYRIGHT AND LICENSE

Copyright (C) 2006-2026 Major Hayden - major@mhtx.net # Copyright (C) 2015-2026 Jean-Marie Renouard - jmrenouard@gmail.com

For the latest updates, please visit http://mysqltuner.pl/

Git repository available at https://github.com/jmrenouard/MySQLTuner-perl/

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

 See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.

2026-09-12 perl v5.38.4