{"id":13328,"date":"2025-12-20T11:00:21","date_gmt":"2025-12-20T05:30:21","guid":{"rendered":"https:\/\/www.youstable.com\/blog\/?p=13328"},"modified":"2025-12-20T11:00:23","modified_gmt":"2025-12-20T05:30:23","slug":"how-to-setup-mysql-on-linux-server","status":"publish","type":"post","link":"https:\/\/www.youstable.com\/blog\/how-to-setup-mysql-on-linux-server","title":{"rendered":"How to Setup MySQL on Linux Server &#8211; Complete Guide"},"content":{"rendered":"\n<p><strong>To set up MySQL on a Linux server<\/strong>, update your packages, install the MySQL Server package (APT\/DNF), start and enable the mysqld service, run mysql_secure_installation, create a database with a least-privileged user, adjust bind-address and firewall (port 3306), and verify local and remote connections. The steps below cover Ubuntu, RHEL\/CentOS, and more.<\/p>\n\n\n\n<p>In this guide, you\u2019ll learn how to setup MySQL on Linux server securely and efficiently, from installation to hardening, configuration, remote access, backups, and basic performance tuning. I\u2019ll share practical steps I use in production environments, with distro-specific commands for Ubuntu\/Debian and RHEL\/CentOS\/Rocky\/AlmaLinux, plus troubleshooting tips to keep your database running reliably.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"understand-your-options-repositories-and-versions\"><strong>Understand Your Options: Repositories and Versions<\/strong><\/h2>\n\n\n\n<p>Before you install, decide where MySQL should come from. Your choice affects version availability, defaults, and update cadence.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Distribution repository<\/strong>: Easiest path on Ubuntu LTS. On Debian and some RHEL derivatives, the default \u201cmysql-server\u201d can be MariaDB. Stable and well-integrated with the OS.<\/li>\n\n\n\n<li><strong>Official MySQL Community repository<\/strong>: Provides the latest MySQL 8 (including LTS 8.4). Recommended if you need current features, InnoDB performance improvements, or consistent behavior across distros.<\/li>\n\n\n\n<li><strong>MariaDB as an alternative<\/strong>: Drop-in for many workloads, but not identical to MySQL 8. Choose deliberately; mixing features\/plugins later can be complex.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"prerequisites-and-planning\"><strong>Prerequisites and Planning<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Root\/sudo <\/strong><a href=\"https:\/\/www.youstable.com\/blog\/ssh-keys-vs-password-authentication\/\">access on the server<\/a>.<\/li>\n\n\n\n<li><strong>Supported OS<\/strong>: Ubuntu 20.04\/22.04\/24.04, Debian 12, RHEL\/CentOS\/Rocky\/AlmaLinux 8\/9.<\/li>\n\n\n\n<li><strong>Resources<\/strong>: At least 1\u20132 GB RAM for small deployments; more for production.<\/li>\n\n\n\n<li><strong>Firewall<\/strong>: Allow TCP 3306 only for trusted IPs.<\/li>\n\n\n\n<li><strong>Hostname\/timezone<\/strong>: Correct time (NTP) and hostname improve logs and replication.<\/li>\n\n\n\n<li><strong>Backup location<\/strong>: Separate disk or bucket for dumps\/snapshots.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"install-mysql-on-popular-linux-distributions\"><strong>Install MySQL on Popular Linux Distributions<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"ubuntu-lts-and-debian\"><strong>Ubuntu (LTS) and Debian<\/strong><\/h3>\n\n\n\n<p>On Ubuntu LTS, installing from the default repo typically yields MySQL 8 Community Server. Debian may <a href=\"https:\/\/www.youstable.com\/blog\/install-mariadb-on-linux-server\/\">install MariaDB<\/a> when you run mysql-server; if you specifically want Oracle MySQL, use the official apt repository.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Ubuntu LTS: install from Ubuntu repo (simple path)\nsudo apt update\nsudo apt install -y mysql-server\nsudo systemctl enable --now mysql.service\n\n# Debian\/Ubuntu: install from official MySQL APT repo (for latest MySQL 8.x)\nwget https:\/\/dev.mysql.com\/get\/mysql-apt-config_0.8.29-1_all.deb\nsudo dpkg -i mysql-apt-config_0.8.29-1_all.deb\n# During the prompt, select MySQL Server 8.x (or 8.4 LTS), then:\nsudo apt update\nsudo apt install -y mysql-server\nsudo systemctl enable --now mysql.service<\/code><\/pre>\n\n\n\n<p>On some Ubuntu builds, the root user may authenticate via the <code>auth_socket<\/code> plugin (no password for local root shell). We\u2019ll standardize this shortly with mysql_secure_installation.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"rhel-centos-rocky-almalinux\"><strong>RHEL\/CentOS\/Rocky\/AlmaLinux<\/strong><\/h3>\n\n\n\n<p>On Enterprise Linux, the official MySQL Yum repository is the most consistent way to get MySQL 8.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Enable MySQL Community 8 repo (EL8\/EL9 choose the matching package)\n# Example for EL9:\nsudo dnf install -y https:\/\/dev.mysql.com\/get\/mysql80-community-release-el9-1.noarch.rpm\nsudo dnf install -y mysql-community-server\nsudo systemctl enable --now mysqld\n\n# Find the temporary root password (initial install)\nsudo grep 'temporary password' \/var\/log\/mysqld.log<\/code><\/pre>\n\n\n\n<p>Note: On first start, MySQL from the Yum repo generates a temporary root password logged in <code>\/var\/log\/mysqld.log<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"opensuse-optional\"><strong>openSUSE (optional)<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo zypper refresh\nsudo zypper install -y mysql-community-server\nsudo systemctl enable --now mysqld<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"secure-the-mysql-installation\"><strong>Secure the MySQL Installation<\/strong><\/h2>\n\n\n\n<p>Run the built-in hardening script. It sets a root password (or reconfigures auth), removes test data, and tightens defaults.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo mysql_secure_installation<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Set\/validate root password<\/strong>: Use a strong, unique passphrase.<\/li>\n\n\n\n<li><strong>Remove anonymous users<\/strong>: Yes.<\/li>\n\n\n\n<li><strong>Disallow remote root login<\/strong>: Yes (recommended).<\/li>\n\n\n\n<li><strong>Remove test database<\/strong>: Yes.<\/li>\n\n\n\n<li><strong>Reload privilege tables<\/strong>: Yes.<\/li>\n<\/ul>\n\n\n\n<p>Next, create an application <a href=\"https:\/\/www.youstable.com\/blog\/change-a-database-user-password-in-directadmin\/\">database and a least-privileged user<\/a>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Log in as root (password or socket, depending on your install)\nsudo mysql -u root -p\n\n-- Inside MySQL shell:\nCREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\nCREATE USER 'appuser'@'localhost' IDENTIFIED BY 'StrongPassw0rd!';\nGRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'localhost';\nFLUSH PRIVILEGES;\nEXIT;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"open-the-firewall-carefully\"><strong>Open the Firewall Carefully<\/strong><\/h2>\n\n\n\n<p>Only expose port 3306 to trusted IPs or private subnets. Avoid binding MySQL to the public internet unless absolutely necessary.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># UFW (Ubuntu)\nsudo ufw allow from 203.0.113.10 to any port 3306 proto tcp\nsudo ufw reload\n\n# firewalld (RHEL\/CentOS\/Rocky\/Alma)\nsudo firewall-cmd --permanent --add-rich-rule='rule family=\"ipv4\" source address=\"203.0.113.10\/32\" port protocol=\"tcp\" port=\"3306\" accept'\nsudo firewall-cmd --reload<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"enable-local-and-remote-connections\"><strong>Enable Local and Remote Connections<\/strong><\/h2>\n\n\n\n<p>By default, many installs bind to localhost only. To accept remote connections (from a specific app server, for example), adjust the bind-address and create a remote user with limited scope.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Debian\/Ubuntu config path\nsudo nano \/etc\/mysql\/mysql.conf.d\/mysqld.cnf\n# RHEL-based config path\nsudo nano \/etc\/my.cnf\n\n# Set inside &#91;mysqld] (choose one):\nbind-address = 0.0.0.0     # listens on all interfaces (use firewall!)\n# or\nbind-address = 10.0.0.5    # listen only on private IP\n\n# Then restart:\nsudo systemctl restart mysql   # Debian\/Ubuntu\nsudo systemctl restart mysqld  # RHEL-based<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code># Create a remote user allowed only from the app server IP\nsudo mysql -u root -p\n\nCREATE USER 'appuser'@'203.0.113.10' IDENTIFIED BY 'StrongPassw0rd!';\nGRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'203.0.113.10';\nFLUSH PRIVILEGES;\nEXIT;<\/code><\/pre>\n\n\n\n<p>Test locally and remotely:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Local test\nmysql -u appuser -p -e \"SHOW DATABASES;\"\n\n# Remote test (from the allowed host)\nmysql -h your.mysql.server -u appuser -p -e \"SELECT 1;\"<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"production-grade-configuration-my-cnf\"><strong>Production-Grade Configuration (my.cnf)<\/strong><\/h2>\n\n\n\n<p>Fine-tune MySQL for your workload. The examples below are safe starting points for many small-to-medium deployments. Adjust using real metrics (SHOW GLOBAL STATUS, slow query log, and performance_schema).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Debian\/Ubuntu: \/etc\/mysql\/mysql.conf.d\/mysqld.cnf\n# RHEL-based:    \/etc\/my.cnf or \/etc\/my.cnf.d\/server.cnf\n\n&#91;mysqld]\n# Networking\nbind-address = 0.0.0.0\nmax_connections = 200\n\n# InnoDB (tune based on RAM; ~50\u201370% if DB-only server)\ninnodb_buffer_pool_size = 4G\ninnodb_flush_method = O_DIRECT\ninnodb_flush_log_at_trx_commit = 1\n\n# Logging &amp; diagnostics\nslow_query_log = ON\nslow_query_log_file = \/var\/log\/mysql\/slow.log\nlong_query_time = 1\n\n# Security\nlocal_infile = OFF\nskip_symbolic_links = ON\n\n# Optional: Require TLS for remote clients (ensure certs exist)\n# require_secure_transport = ON<\/code><\/pre>\n\n\n\n<p>After changes, restart MySQL and confirm they applied:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl restart mysql   # or mysqld\nmysql -u root -p -e \"SHOW VARIABLES LIKE 'innodb_buffer_pool_size';\"<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"tls-ssl-for-mysql-optional-but-recommended\"><strong>TLS\/SSL for MySQL (Optional but Recommended)<\/strong><\/h2>\n\n\n\n<p>MySQL 8 often generates self-signed certificates at install time. Verify with:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mysql -u root -p -e \"SHOW VARIABLES LIKE 'have_ssl'; SHOW STATUS LIKE 'Ssl_%';\"<\/code><\/pre>\n\n\n\n<p>If not present, create or install valid certs (preferred: CA-issued), set <code>ssl_ca<\/code>, <code>ssl_cert<\/code>, and <code>ssl_key<\/code> in <code>[mysqld]<\/code>, then restart. Enforce encrypted client connections with <code>require_secure_transport=ON<\/code> and create users with <code>REQUIRE SSL<\/code> as needed.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"backups-and-maintenance\"><strong>Backups and Maintenance<\/strong><\/h2>\n\n\n\n<p>Always keep tested backups. For small-to-medium databases, <code>mysqldump<\/code> with a single transaction is reliable and simple.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Full logical backup\nmysqldump -u root -p --single-transaction --routines --triggers --events \\\n  --hex-blob --all-databases | gzip &gt; \/backups\/mysql-$(date +%F).sql.gz\n\n# Restore\ngunzip -c \/backups\/mysql-2025-01-01.sql.gz | mysql -u root -p<\/code><\/pre>\n\n\n\n<p>Set a daily <a href=\"https:\/\/www.youstable.com\/blog\/install-cron-jobs-on-linux\/\">cron job<\/a>, rotate, and copy backups off-server. For large datasets or hot backups, consider snapshotting (LVM, ZFS) or physical backup tools. Always test recovery on a staging server.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"troubleshooting-quick-checklist\"><strong>Troubleshooting: Quick Checklist<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Service state<\/strong>: <code>systemctl status mysql<\/code> or <code>systemctl status mysqld<\/code>.<\/li>\n\n\n\n<li><strong>Logs<\/strong>: <code>journalctl -u mysql -e<\/code>, <code>\/var\/log\/mysql\/error.log<\/code> or <code>\/var\/log\/mysqld.log<\/code>.<\/li>\n\n\n\n<li><strong>Port listening<\/strong>: <code>ss -lntp | grep 3306<\/code>.<\/li>\n\n\n\n<li><strong>Bind address<\/strong>: Confirm <code>bind-address<\/code> matches your intent.<\/li>\n\n\n\n<li><strong>Firewall\/SELinux<\/strong>: Open 3306 to the right IPs; if changing ports on SELinux, map with <code>semanage port -a -t mysqld_port_t -p tcp 3307<\/code>.<\/li>\n\n\n\n<li><strong>Authentication issues<\/strong>: Check auth plugins and user host entries (<code>SELECT user, host, plugin FROM mysql.user;<\/code>).<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"real-world-tips-from-production\"><strong>Real-World Tips from Production<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Size buffer pool first<\/strong>: Memory sizing (InnoDB buffer pool) yields bigger gains than tweaking dozens of minor variables.<\/li>\n\n\n\n<li><strong>Enable slow logs early<\/strong>: They spotlight queries to fix before scale hurts.<\/li>\n\n\n\n<li><strong>Isolate workloads<\/strong>: If the <a href=\"https:\/\/www.youstable.com\/blog\/install-apache-web-server-in-linux\/\">server runs both web<\/a> and DB, CPU and I\/O contention can spike latency. Consider dedicated DB nodes or managed DB.<\/li>\n\n\n\n<li><strong>Avoid remote root<\/strong>: Create explicit app users with minimal privileges and host restrictions.<\/li>\n\n\n\n<li><strong>Plan upgrades<\/strong>: Read release notes; MySQL 8 introduces sql_mode defaults that can affect legacy schemas.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"when-managed-mysql-makes-sense\"><strong>When Managed MySQL Makes Sense<\/strong><\/h2>\n\n\n\n<p>If you\u2019d rather not maintain patches, backups, and performance tuning yourself, a <a href=\"https:\/\/www.youstable.com\/blog\/benefits-of-fully-managed-dedicated-server\/\">managed database or a fully<\/a> managed VPS can help. At YouStable, we provision, secure, monitor, and back up MySQL on optimized infrastructure, so your team can focus on the app instead of the database plumbing.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"faq-how-to-setup-mysql-on-linux-server\"><strong>FAQ: How to Setup MySQL on Linux Server<\/strong><\/h2>\n\n\n<div id=\"rank-math-faq\" class=\"rank-math-block\">\n<div class=\"rank-math-list \">\n<div id=\"faq-question-1765793814165\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"how-do-i-reset-the-mysql-root-password-on-linux\"><strong>How do I reset the MySQL root password on Linux?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Stop MySQL, start it with grant tables disabled, set a new password, then restart normally. Example:<\/p>\n<p>sudo systemctl stop mysql   # or mysqld<br \/>sudo mysqld_safe &#8211;skip-grant-tables &#8211;skip-networking &amp;<br \/>mysql -u root<br \/>ALTER USER &#8216;root&#8217;@&#8217;localhost&#8217; IDENTIFIED BY &#8216;NewStrongPass!&#8217;;<br \/>FLUSH PRIVILEGES;<br \/>EXIT;<br \/># Stop the unsafe instance, then:<br \/>sudo systemctl start mysql<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1765793827046\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"what-port-does-mysql-use-and-how-do-i-open-it-safely\"><strong>What port does MySQL use and how do I open it safely?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>MySQL uses TCP 3306. Open it only to specific IPs via UFW or firewalld and avoid binding to 0.0.0.0 unless necessary. For example: <code>ufw allow from YOUR.IP.ADDR to any port 3306 proto tcp<\/code>. Always restrict with security groups or VPN on cloud servers.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1765793849513\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"how-do-i-install-mysql-8-on-debian-without-getting-mariadb\"><strong>How do I install MySQL 8 on Debian without getting MariaDB?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Use the official MySQL APT repository. Install the mysql-apt-config package from dev.mysql.com, select MySQL Server 8.x, run <code>apt update<\/code>, then <code>apt install mysql-server<\/code>. That ensures Oracle MySQL instead of the default MariaDB packages.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1765793859962\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"how-can-i-move-the-mysql-data-directory-to-another-disk\"><strong>How can I move the MySQL data directory to another disk?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Stop MySQL, copy the data directory with correct ownership, update <code>datadir<\/code> in the config, adjust AppArmor\/SELinux contexts if enabled, and start MySQL. Validate with logs. Example paths: <code>\/var\/lib\/mysql<\/code> to <code>\/data\/mysql<\/code>. Use <code>rsync -av<\/code> to preserve permissions.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1765793868278\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"whats-the-easiest-way-to-back-up-mysql-on-linux\"><strong>What\u2019s the easiest way to back up MySQL on Linux?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>For small-to-medium instances, a nightly <code>mysqldump --single-transaction<\/code> piped to gzip is simple and effective. For larger, 24\/7 systems, consider physical backups or volume snapshots and always test restores. Managed options from providers like YouStable can automate this end-to-end.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"wrap-up\"><strong>Wrap-Up<\/strong><\/h2>\n\n\n\n<p>You\u2019ve learned how to install, secure, configure, and maintain MySQL on Linux using best practices: repository choice, mysql_secure_installation, firewall rules, least-privileged users, TLS, backups, and tuning. Start small, measure, and iterate. If you outgrow DIY, YouStable can manage MySQL for you so you can focus on building great products.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>To set up MySQL on a Linux server, update your packages, install the MySQL Server package (APT\/DNF), start and enable [&hellip;]<\/p>\n","protected":false},"author":13,"featured_media":15508,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"iawp_total_views":6,"footnotes":""},"categories":[350],"tags":[],"class_list":["post-13328","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-knowledgebase"],"acf":[],"featured_image_src":"https:\/\/www.youstable.com\/blog\/wp-content\/uploads\/2025\/12\/How-to-Setup-MySQL-on-Linux-Server.jpg","author_info":{"display_name":"Prahlad Prajapati","author_link":"https:\/\/www.youstable.com\/blog\/author\/prahladblog"},"_links":{"self":[{"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/posts\/13328","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/comments?post=13328"}],"version-history":[{"count":3,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/posts\/13328\/revisions"}],"predecessor-version":[{"id":15509,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/posts\/13328\/revisions\/15509"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/media\/15508"}],"wp:attachment":[{"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/media?parent=13328"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/categories?post=13328"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/tags?post=13328"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}