Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

The message usually means your command uses the wrong service-manager name, not that the MySQL server daemon is missing. Debian and Ubuntu installations commonly provide mysql.service, while many RPM-based installations provide mysqld.service. Find the unit installed on your system, then use that exact name with systemctl or the legacy service command.

What the error actually means

mysqld is the name of the MySQL server daemon executable. A service manager does not have to use that executable name. Package maintainers choose the unit or init-script name, and that choice varies by distribution and package family. Oracle’s MySQL documentation identifies mysqld.service as the normal unit on RPM platforms, while Debian-based systems and SLES may use mysql.service.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Therefore, this command can fail even when MySQL is installed:

sudo service mysqld start

On a Debian or Ubuntu host, the corresponding command is often:

sudo service mysql start

On a typical RPM installation, the original name is usually correct:

sudo systemctl start mysqld

The error is different from a service that exists but cannot start. “Unrecognized service” means the manager could not find a service with the name you supplied. A unit that is found but exits immediately requires a separate startup diagnosis.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Quick identification: determine the right unit before changing anything

Do not guess from the daemon name. Run the following discovery commands first:

cat /etc/os-release
systemctl list-unit-files | grep -Ei 'mysql|maria|mysqld'
systemctl list-units --all | grep -Ei 'mysql|maria|mysqld'

The first command identifies the distribution. The two systemctl searches show both installed unit files and units currently loaded or known to systemd. Typical results include mysql.service, mysqld.service, or mariadb.service. Use the name shown by your machine, without the optional .service suffix.

If the searches return nothing, check whether a server package is installed. The package command depends on the distribution:

# Debian or Ubuntu
apt list --installed 2>/dev/null | grep -Ei 'mysql|maria'
dpkg -l | grep -Ei 'mysql|maria'

# Fedora, RHEL, CentOS, Rocky, AlmaLinux and other RPM systems
rpm -qa | grep -Ei 'mysql|maria'
dnf list installed 2>/dev/null | grep -Ei 'mysql|maria'

A binary on the path is useful evidence but not proof that a service unit exists. For example, Ubuntu’s mysql-server-core-8.0 package supplies the mysqld daemon, while the service definition is supplied as part of the server installation and integration. A client-only installation can contain MySQL commands without installing a local server or a startable unit.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Use the correct command for each Linux family

Environment Common unit Check status Start
Ubuntu or Debian using the distribution MySQL server package mysql.service sudo systemctl status mysql sudo systemctl start mysql
RPM-based MySQL installation mysqld.service sudo systemctl status mysqld sudo systemctl start mysqld
SLES or another package that installs the Debian-style name mysql.service sudo systemctl status mysql sudo systemctl start mysql
MariaDB installation mariadb.service (commonly) sudo systemctl status mariadb sudo systemctl start mariadb

These are common defaults, not substitutes for discovery. Third-party repositories, vendor images and locally rebuilt packages can select another name. If systemctl list-unit-files reports a different unit, use that exact result.

With systemd, the equivalent commands are:

# Debian or Ubuntu
sudo systemctl status mysql
sudo systemctl start mysql
sudo systemctl enable mysql

# RPM-based MySQL installation
sudo systemctl status mysqld
sudo systemctl start mysqld
sudo systemctl enable mysqld

start affects the current boot. enable arranges for the unit to start during future boots; it does not start a stopped service by itself. If you want both actions in one command and your systemd version supports it, use sudo systemctl enable --now mysql or the matching unit.

Step-by-step diagnosis by failure state

Case 1: the unit exists under another name

If discovery shows mysql.service, replace every occurrence of mysqld in your command:

sudo systemctl status mysql
sudo systemctl start mysql
sudo systemctl enable mysql

The same substitution applies to the legacy interface:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
sudo service mysql start
sudo service mysql status

Do not mix names in a troubleshooting sequence. Querying mysql and then reading the journal for mysqld can make a healthy installation appear broken because you are inspecting a different unit.

Case 2: MariaDB is installed

MariaDB packages normally register a MariaDB-specific unit. Confirm it with:

systemctl list-unit-files | grep -Ei 'maria|mysql|mysqld'
sudo systemctl status mariadb
sudo systemctl start mariadb

Use MariaDB’s unit and documentation for that installation. Installing a MySQL unit by hand merely because an application calls its database “MySQL” can create conflicting ownership of the data directory and configuration files.

Case 3: no matching unit is installed

When neither mysql, mysqld nor mariadb appears, verify that a server package—not only a client package—was installed and that the package transaction completed successfully.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
# Debian or Ubuntu
sudo apt update
sudo apt install mysql-server

# Fedora or another DNF-based RPM system
sudo dnf install mysql-server

Package names differ between releases and repositories, so use your distribution’s package search if these names are unavailable. After installation, repeat the unit discovery commands rather than assuming the result is mysql or mysqld. If an interrupted upgrade is suspected, repair the package manager first, then reinstall the server package through the same repository.

Also check whether the machine is running inside a container or a minimal image. Such images may include the daemon binary but intentionally omit systemd and its unit files. In that situation, follow the image’s process-supervision method instead of trying to create a host service.

Case 4: the unit is present but will not start

Once systemd recognizes the unit, an error such as “failed” or “exit-code” is a startup problem, not an unrecognized-service problem. Capture the status and recent journal entries for the same unit:

# Debian or Ubuntu
sudo systemctl status mysql --no-pager
sudo journalctl -u mysql -n 100 --no-pager

# RPM-based MySQL installation
sudo systemctl status mysqld --no-pager
sudo journalctl -u mysqld -n 100 --no-pager

Look for the first meaningful error, such as an invalid option, an inaccessible data directory, a permissions failure, a port already in use, an unclean shutdown or insufficient disk space. Correct that underlying condition, then retry the matching unit. Reading the journal for a guessed unit can hide the actual diagnostic output.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

How distribution packaging causes the name difference

Debian and Ubuntu

Distribution packages commonly register mysql.service. Ubuntu’s server documentation uses commands such as sudo systemctl restart mysql.service and sudo service mysql restart. The executable still appears as mysqld, which is why tutorials written for another distribution often cause this error when copied unchanged.

RPM-based systems

MySQL’s RPM installation instructions commonly use mysqld.service:

sudo systemctl start mysqld
sudo systemctl enable mysqld

“RPM-based” is a package-family description, not a guarantee for every vendor image. SLES is an important exception documented by MySQL: it may use mysql.service. Check the installed unit rather than relying solely on the operating-system label.

Legacy SysV init scripts

Older systems may use scripts in /etc/init.d instead of native systemd units. Inspect the directory when systemctl is unavailable:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
ls -1 /etc/init.d | grep -Ei 'mysql|maria|mysqld'

A script named mysql must be called as sudo service mysql start; a script named mysqld must be called as sudo service mysqld start. On systems where systemd provides compatibility for SysV scripts, systemctl may still display a generated unit, but its name follows the script name.

Useful checks when the daemon exists but the service does not

Find the executable and identify its owning package:

command -v mysqld
mysqld --version

On Debian-family systems, the package database can identify the owner of a known path:

dpkg -S "$(command -v mysqld)"

On RPM systems, query the package that owns the executable:

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
rpm -qf "$(command -v mysqld)"

These checks distinguish a complete server installation from a manually copied binary or a package that provides only server files. They do not create a service definition. If the owning package is not the distribution’s server package, consult that package’s installation instructions before changing systemd.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Do not create a replacement unit just to silence the message

A hand-written mysqld.service can conflict with vendor-provided environment files, permissions, socket paths, data directories and upgrade logic. It can also make future package updates fail to replace the correct unit. First confirm the product, server package and intended unit name. Only create a custom unit when you deliberately operate a custom installation and understand its process, security context and upgrade responsibilities.

For a packaged installation, use the vendor unit and adjust it with a systemd drop-in. MySQL documents these commands with the unit name appropriate to the platform:

# Debian or Ubuntu
sudo systemctl edit mysql

# RPM-based installation
sudo systemctl edit mysqld

sudo systemctl daemon-reload
sudo systemctl restart mysql    # use mysqld when that is the installed unit

systemctl edit creates an override without modifying the package-owned unit file. After saving the override, reload systemd and restart the same unit. If the service does not restart, inspect systemctl status and the unit-specific journal before removing the override.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

A practical decision tree

  1. Run cat /etc/os-release and the two unit-list searches.
  2. If mysql.service appears, run sudo systemctl status mysql and start it with sudo systemctl start mysql.
  3. If mysqld.service appears, use the same commands with mysqld.
  4. If mariadb.service appears, use mariadb and follow MariaDB-specific guidance.
  5. If no database unit appears, inspect installed packages and install or repair the server package from the distribution repository.
  6. If a unit appears but is failed, collect systemctl status and journalctl -u <unit> output and fix the first underlying startup error.
  7. Only after these checks should you consider a systemd override or a custom service definition.

Common mistakes to avoid

  • Assuming the daemon and unit must match: mysqld names the server process; packaging determines the service name.
  • Copying RPM commands onto Ubuntu: Replace mysqld with the discovered Debian-style unit when appropriate.
  • Calling a MySQL unit for MariaDB: Check for mariadb.service before changing packages.
  • Using enable as a repair command: Enabling controls boot behavior; it does not explain why a unit fails now.
  • Reading the wrong journal: The argument to journalctl -u must match the unit you actually installed.
  • Installing a client and expecting a server: Client utilities can be present without a local daemon or service unit.
  • Creating a duplicate unit prematurely: A custom file can hide incomplete packaging and interfere with upgrades.

Verification after the service starts

Confirm that systemd considers the correct unit active:

sudo systemctl is-active mysql       # substitute mysqld or mariadb
sudo systemctl is-enabled mysql      # optional boot-start check

Then test the database connection with the account and authentication method configured for your installation. A running service only proves that the server process started; it does not prove that a particular user, socket, TCP port or application credential works. Keep those connection checks separate from service-name troubleshooting.

When to escalate the investigation

Escalate beyond service naming when the correct unit is present but repeatedly fails, the package manager reports dependency errors, or the journal shows storage, permission, configuration or port conflicts. Preserve the output of systemctl status <unit>, journalctl -u <unit>, the distribution release information and the installed package list. Those details identify whether the next fix belongs to systemd, packaging, MySQL configuration or the operating system.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.