MySQL
MySQL is one of the most widely deployed open-source relational databases in the world. This image ships a long-term support release intended for production workloads.
MySQL is published as one image per maintained LTS line. Pick the version you need when you deploy. Both 8.4 and 9.7 are current LTS lines, and 9.7 is the forward path off 8.4.
Software included
Section titled “Software included”| Component | Version |
|---|---|
| MySQL Server | 8.4.x or 9.7.x (LTS, per template) |
| Ubuntu | 24.04 LTS |
Environment variables
Section titled “Environment variables”You can optionally set these when deploying MySQL from the marketplace. Leave any field blank to have a secure random value generated automatically.
| Variable | Description |
|---|---|
MYSQL_ROOT_PASSWORD | Database root password |
MYSQL_DATABASE | Name of the application database to create |
MYSQL_USER | Application database username |
MYSQL_PASSWORD | Application database user password |
Getting started
Section titled “Getting started”1. Connect to your VM
Section titled “1. Connect to your VM”ssh ubuntu@<your-vm-ip>2. Wait for first-boot configuration
Section titled “2. Wait for first-boot configuration”On the first boot, a setup script runs automatically. It generates a random root password and saves
it to /etc/mysql/mysql-root-password.txt. This takes under 30 seconds.
Track progress:
journalctl -u mysql-first-boot.service -f3. Retrieve credentials
Section titled “3. Retrieve credentials”sudo cat /etc/mysql/mysql-root-password.txtThis file contains the root password. It is only readable by root.
4. Connect to MySQL
Section titled “4. Connect to MySQL”ROOT_PASS=$(sudo cat /etc/mysql/mysql-root-password.txt)mysql -u root -p"$ROOT_PASS"Managing MySQL
Section titled “Managing MySQL”# Check service statussystemctl status mysql
# Restartsudo systemctl restart mysql
# View logssudo journalctl -u mysql -fConfiguration directory: /etc/mysql/mysql.conf.d/
To allow remote connections, edit /etc/mysql/mysql.conf.d/mysqld.cnf and change bind-address
from 127.0.0.1 to 0.0.0.0, then restart MySQL. Open the firewall for specific IPs only (see
Security).
Security
Section titled “Security”Port 3306 is not open externally by default. UFW is enabled and allows SSH (port 22) only.
To allow access from a specific IP:
sudo ufw allow from <trusted-ip> to any port 3306To connect without opening the firewall (recommended), use an SSH tunnel:
# Run this on your local machinessh -L 3306:localhost:3306 ubuntu@<your-vm-ip>
# Then connect locallymysql -u root -p"<root-password>"