Download and Install ProxySQL
ProxySQL offers packaged releases for multiple operating system distributions. Install packages directly from the GitHub Releases Page or via RPM/DEB repositories.
The current version of ProxySQL is ….
Supported Operating Systems
| Distribution | Versions |
|---|---|
| RedHat & CentOS | 10, 9, 8*, 7* |
| Amazon Linux | 2023, 2* |
| Debian | 13, 12, 11*, 10* |
| Ubuntu | 24, 22, 20*, 18*, 16* |
| Almalinux | 10, 9, 8 |
| OpenSUSE Leap | 15, 16 |
* ProxySQL v2.7.x and older releases only.
Docker and Kubernetes deployment options are available via DockerHub and the ProxySQL Kubernetes repository.
Currently Maintained Releases
- ProxySQL Core 3.0.x Series (GA)
- ProxySQL Core 2.7.x Series (GA)
- ProxySQL Core 2.6.x Series (GA)
- ProxySQL Core 2.5.x Series (GA)
- ProxySQL Core 2.4.x Series (GA)
- ProxySQL Core 2.3.x Series (GA)
- ProxySQL Core 2.2.x Series (GA)
- ProxySQL Binlog Reader 2.x Series (GA)
Installing Packages Directly
Download from the GitHub Release Page and install with your package manager:
wget https://github.com/sysown/proxysql/releases/download/vPROXYSQL_VERSION/proxysql_PROXYSQL_VERSION-ubuntu22_amd64.deb
dpkg -i proxysql_PROXYSQL_VERSION-ubuntu22_amd64.deb
Installing a Generic Linux Tarball
Generic release tarballs are useful when no matching RPM or DEB is available. They are built on AlmaLinux 9 and target Linux systems with glibc 2.34 or newer and OpenSSL 3. Release assets use this version-independent naming scheme:
proxysql-<version>-linux-amd64.tar.gz
proxysql-<version>-linux-arm64.tar.gz
Unlike a distribution package, a tarball does not create the service account, install files into system paths, or register the service. The operator owns those steps and the upgrade/rollback procedure.
Select the Architecture and Download
Choose amd64 for x86_64 and arm64 for aarch64/arm64. Set the release version explicitly rather than
copying a version from this page:
PROXYSQL_VERSION='<release-version>'
case "$(uname -m)" in
x86_64) PROXYSQL_ARCH=amd64 ;;
aarch64|arm64) PROXYSQL_ARCH=arm64 ;;
*) echo "Unsupported architecture: $(uname -m)" >&2; exit 1 ;;
esac
PROXYSQL_ARCHIVE="proxysql-${PROXYSQL_VERSION}-linux-${PROXYSQL_ARCH}.tar.gz"
PROXYSQL_RELEASE_URL="https://github.com/sysown/proxysql/releases/download/v${PROXYSQL_VERSION}"
curl -fLO "${PROXYSQL_RELEASE_URL}/${PROXYSQL_ARCHIVE}"
curl -fLO "${PROXYSQL_RELEASE_URL}/${PROXYSQL_ARCHIVE}.sha256"
curl -fLO "${PROXYSQL_RELEASE_URL}/${PROXYSQL_ARCHIVE}.asc"
Verify the Signature and Checksum
Import the ProxySQL release signing key from a separately authenticated source and verify its fingerprint under your organization’s trust policy. Then verify the detached signature and the published checksum before extracting anything:
gpg --verify "${PROXYSQL_ARCHIVE}.asc" "${PROXYSQL_ARCHIVE}"
sha256sum -c "${PROXYSQL_ARCHIVE}.sha256"
Both commands must succeed. A checksum detects a damaged download; the signature, together with an independently verified signing key, authenticates the artifact.
Extract and Inspect the Layout
tar tzf "${PROXYSQL_ARCHIVE}"
tar xzf "${PROXYSQL_ARCHIVE}"
cd "proxysql-${PROXYSQL_VERSION}-linux-${PROXYSQL_ARCH}"
The archive contains:
bin/proxysql— the ProxySQL executable;etc/proxysql.cnfandetc/logrotate.d/proxysql— sample configuration and log rotation;systemd/system/proxysql.serviceandproxysql-initial.service— service units;share/proxysql/tools/— operational helper scripts; andlib/proxysql/— runtime plugins when included by the release tier, notably in 4.0 builds.
Install the Service and User
The bundled systemd unit expects /usr/bin/proxysql, /etc/proxysql.cnf, a proxysql user and group, and a
writable /var/lib/proxysql. The following is a starting point for a systemd host; adapt the service-account
commands and nologin path to the distribution:
sudo groupadd --system proxysql
sudo useradd --system --gid proxysql --home-dir /var/lib/proxysql \
--shell /usr/sbin/nologin proxysql
sudo install -d -o proxysql -g proxysql -m 0750 /var/lib/proxysql
sudo install -o root -g root -m 0755 bin/proxysql /usr/bin/proxysql
sudo install -o root -g proxysql -m 0640 etc/proxysql.cnf /etc/proxysql.cnf
sudo install -o root -g root -m 0644 systemd/system/proxysql.service \
systemd/system/proxysql-initial.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable proxysql
If lib/proxysql/ is present, install its contents under /usr/lib/proxysql/ and configure only the plugins
you intend to load. Before the first start, edit /etc/proxysql.cnf, replace the sample Admin credentials,
restrict admin_variables.mysql_ifaces to trusted interfaces, and review every other listener. Install log
rotation as appropriate and confirm file ownership. Start the service only after those security settings are in
place:
sudo systemctl start proxysql
Use proxysql-initial.service only when you intentionally want --initial behavior.
Upgrade and Roll Back
Before an upgrade, record the current version and test the new tarball with the same libc/OpenSSL baseline and
configuration in a staging environment. During the change window, stop ProxySQL before making a raw-copy
backup of the executable, configuration, plugin directory, and /var/lib/proxysql/proxysql.db. The database
backup contains credentials and other sensitive configuration; restrict its permissions and protect its storage
and transport. After the stopped-state backup completes, install the matching executable and plugins, then start
and verify the service before removing the backup.
For rollback, stop ProxySQL and restore the previous executable and matching plugins. If the newer release
changed the on-disk schema or configuration, restore its matching proxysql.db backup while ProxySQL is stopped;
do not assume a database written by a newer version is backward compatible.
Distribution packages remain preferable when available: the RPM/DEB lifecycle handles dependency metadata, standard paths, service-account creation, systemd integration, package signatures, upgrades, and removal. Generic tarballs provide portability, but those responsibilities remain with the administrator.
Installing from Repositories
Ubuntu / Debian
apt-get install -y --no-install-recommends lsb-release wget apt-transport-https ca-certificates gnupg
# Add repository key
wget -nv -O /etc/apt/trusted.gpg.d/proxysql-3.0.x-keyring.gpg \
'https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/repo_pub_key.gpg'
# Add repository
echo deb https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/$(lsb_release -sc)/ ./ \
| tee /etc/apt/sources.list.d/proxysql.list
# Install
apt-get update
apt-get install proxysql
To install a specific version:
apt-get install proxysql=PROXYSQL_VERSION-ubuntu22
For older series replace proxysql-3.0.x in the repository URL with proxysql-2.7.x, proxysql-2.6.x, etc.
RedHat / CentOS
cat <<EOF | tee /etc/yum.repos.d/proxysql.repo
[proxysql_repo]
name=ProxySQL repository
baseurl=https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/centos/\$releasever
gpgcheck=1
gpgkey=https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/repo_pub_key
EOF
yum install proxysql
Amazon Linux
Use CentOS packages (CentOS 9 for Amazon Linux 2023; CentOS 7 for Amazon Linux 2):
cat <<EOF | tee /etc/yum.repos.d/proxysql.repo
[proxysql_repo]
name=ProxySQL repository
baseurl=https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/centos/9
gpgcheck=1
gpgkey=https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/repo_pub_key
EOF
yum install proxysql
Almalinux
cat <<EOF | tee /etc/yum.repos.d/proxysql.repo
[proxysql_repo]
name=ProxySQL repository
baseurl=https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/almalinux/\$releasever
gpgcheck=1
gpgkey=https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/repo_pub_key
EOF
yum install proxysql
OpenSUSE Leap
zypper addrepo -g -n 'ProxySQL repository' \
'https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/opensuse/$releasever_major' proxysql
zypper --gpg-auto-import-keys install proxysql
Running ProxySQL with Docker
Configuration File
Create a basic proxysql.cnf for development and testing:
datadir="/var/lib/proxysql"
admin_variables=
{
admin_credentials="admin:admin;radmin:radmin"
mysql_ifaces="0.0.0.0:6032"
}
mysql_variables=
{
threads=4
max_connections=2048
default_query_delay=0
default_query_timeout=36000000
have_compress=true
poll_timeout=2000
interfaces="0.0.0.0:6033"
default_schema="information_schema"
stacksize=1048576
server_version="5.5.30"
connect_timeout_server=3000
monitor_username="monitor"
monitor_password="monitor"
monitor_history=600000
monitor_connect_interval=60000
monitor_ping_interval=10000
monitor_read_only_interval=1500
monitor_read_only_timeout=500
ping_interval_server_msec=120000
ping_timeout_server=500
commands_stats=true
sessions_sort=true
connect_retries_on_failure=10
}
Run the Container
docker run -p 16032:6032 -p 16033:6033 -p 16070:6070 \
-d -v /path/to/proxysql.cnf:/etc/proxysql.cnf \
proxysql/proxysql
A second pair of admin credentials (e.g. radmin:radmin) is required to connect from outside the container.
For Kubernetes, sample Helm charts are available in the ProxySQL Kubernetes GitHub Repository.
Next Steps
See First Steps After Installing for post-installation guidance.