
mysqld_safe Command in Linux
The mysqld_safe command is a wrapper script provided by MySQL to start the MySQL server (mysqld) with enhanced safety and reliability. It is designed to handle various error conditions and ensure that the MySQL server runs smoothly. This guide will explore the mysqld_safe command in detail, including its installation, configuration, and usage with practical examples.
Table of Contents
Here is a comprehensive guide to the options available with the mysqld_safe command −
- Understanding mysqld_safe Command
- mysqld_safe Command Options
- Examples of mysqld_safe Command in Linux
- Troubleshooting Tips for mysqld_safe Command
Understanding mysqld_safe Command
The mysqld_safe command is a shell script that starts the MySQL server (mysqld) with additional safety features. It monitors the MySQL server process and restarts it if it crashes. Additionally, it can log errors and provide a safe environment for the MySQL server to run.
Prerequisites
Before we dive into the mysqld_safe command, ensure you have the following −
- A Linux system with root or sudo access.
- MySQL installed on your system.
- Basic knowledge of MySQL and Linux command-line operations.
Install MySQL
If you haven't installed MySQL yet, you can do so using the following commands −
sudo apt update sudo apt install mysql-server -y

Basic Usage of mysqld_safe
To start the MySQL server using mysqld_safe, use the following command −
sudo mysqld_safe &

The & at the end of the command runs mysqld_safe in the background, allowing you to continue using the terminal.
mysqld_safe Command Options
The mysqld_safe command supports various configuration options that can be specified in the MySQL configuration file (my.cnf) or as command-line arguments. Here are some common options −
--basedir − Specifies the base directory for the MySQL installation.
sudo mysqld_safe --basedir=/usr/local/mysql &

--datadir − Specifies the data directory for the MySQL server.
sudo mysqld_safe --datadir=/var/lib/mysql &

--log-error − Specifies the error log file.
sudo mysqld_safe --log-error=/var/log/mysql/error.log &

--pid-file − Specifies the PID file for the MySQL server.
sudo mysqld_safe --pid-file=/var/run/mysqld/mysqld.pid &

--user − Specifies the user under which the MySQL server should run.
sudo mysqld_safe --user=mysql &

Customizing mysqld_safe with my.cnf
You can customize the behavior of mysqld_safe by adding configuration options to the my.cnf file.
Here is an example configuration −
[mysqld_safe] basedir = /usr/local/mysql datadir = /var/lib/mysql log-error = /var/log/mysql/error.log pid-file = /var/run/mysqld/mysqld.pid user = mysql
Examples of mysqld_safe Command in Linux
Let's explore some advanced usage scenarios and examples of the mysqld_safe command.
Starting MySQL with Custom Configuration
To start the MySQL server with a custom configuration file, use the --defaults-file option −
sudo mysqld_safe --defaults-file=/etc/mysql/custom.cnf &

This command starts the MySQL server using the configuration specified in custom.cnf.
Running MySQL with a Specific User
To run the MySQL server as a specific user, use the --user option −
sudo mysqld_safe --user=mysql &

This command ensures that the MySQL server runs with the permissions of the mysql user.
Specifying the Data Directory
To specify a custom data directory for the MySQL server, use the --datadir option −
sudo mysqld_safe --datadir=/custom/data/directory &

This command starts the MySQL server with the data directory set to /custom/data/directory.
Logging Errors to a Custom File
To log errors to a custom file, use the --log-error option −
sudo mysqld_safe --log-error=/custom/logs/mysql_error.log &

This command logs MySQL server errors to /custom/logs/mysql_error.log.
Monitoring and Restarting MySQL
One of the key features of mysqld_safe is its ability to monitor the MySQL server process and restart it if it crashes. This ensures high availability and reliability of the MySQL server.
Troubleshooting Tips for mysqld_safe Command
Here are some common issues and troubleshooting tips for using mysqld_safe −
Permission Issues − Ensure that the MySQL data directories and log files have the correct permissions. Use the chown command to set the appropriate ownership −
sudo chown -R mysql:mysql /var/lib/mysql sudo chown -R mysql:mysql /var/log/mysql

Configuration Errors − If mysqld_safe fails to start, check the error log file for configuration errors. Ensure that the my.cnf file is correctly configured and that all specified directories exist.
Port Conflicts − Ensure that the MySQL server is configured to use a unique port. Check the my.cnf file to verify the port settings −
[mysqld] port = 3306
Socket File Issues − Ensure that the MySQL server is configured to use a unique socket file. Check the my.cnf file to verify the socket settings −
[mysqld] socket = /var/run/mysqld/mysqld.sock
Log File Issues − Ensure that the MySQL server is configured to use a unique log file. Check the my.cnf file to verify the log file settings −
[mysqld] log-error = /var/log/mysql/error.log
Conclusion
The mysqld_safe command is a powerful tool for starting and managing the MySQL server with enhanced safety and reliability. By following the steps outlined in this guide, you can configure, start, and manage the MySQL server using mysqld_safe with ease.
This setup is particularly useful for ensuring high availability and reliability of the MySQL server in production environments. With the ability to customize the configuration and monitor the MySQL server process, mysqld_safe provides a flexible and efficient solution for managing MySQL servers on a Linux system.