Home >Database >Mysql Tutorial >Teach you how to start and stop one of the Mysql services
Before discussing how to start the MySQL server, let us consider what user the MySQL server should be run as. The server can be started manually or automatically. If you start it manually, the server starts as the user you log into Unix (Linux), that is, if you log in to Unix with paul and start the server, it runs with paul; if you use the su command to switch to root, Then start the server so that it runs as root. However, most of the time you probably don't want to start the server manually, most likely you will arrange for the MySQL server to start automatically when the system boots, as part of the standard boot process, which under Unix is performed by the system's Unix user root, And any processes running within the process run with root privileges.
You should keep two goals in mind during the MySQL server startup process:
You want the server to run as a non-root user. Generally, you want to limit the ability of any running process unless root privileges are truly required, which MySQL does not.
You want the server to always run as the same user. It is very inconvenient to use one user and run the server as a different user at other times. This results in files and directories having different attributes. The main data directory is created and may cause the server to be unable to access databases or tables, depending on which user you are running as. Running the server as the same user will help you avoid this problem.
To run the server as a normal unprivileged user, follow these steps:
Select a user to run the server. Mysqld can be run as any user. But conceptually clearer is to create a separate user for MySQL operations. You can also select a user group specifically for MySQL. This article uses mysqladm and mysqlgrp as the user name and user group name respectively.
If you have installed MySQL under your own account and do not have special administrative rights on the system, you will be able to run the server under your own user ID. In this case, replace mysqladm and mysqlgrp with your own login name and user group.
If you use an rpm file to install MySQL on RedHat Linux, the installation will automatically create an account named mysql and use this account instead of mysqladm.
If necessary, use the system's normal user creation process to create a server account. You need to use root to do it.
If the server is running, stop it.
Modify the ownership of the data directory and any subdirectories and files so that the mysqladm user owns them. For example, if the data directory is /usr/local/var, you can set the owner of mysqladm as follows (you need to run these commands as root):
#cd /usr/local/var
#chown -R mysqladm.mysqlgrp
Modify the permissions of the data directory and any subdirectories and files so that they can only be accessed by the mysqladm user. If the data directory is /usr/local/var, you can set anything owned by mysqladm:
# cd /usr/local/var
#chmod -R go- rwx
When you set the owner and mode of the data directory and its contents, pay attention to symbolic links. You need to follow them and change the ownership and mode of the files or directories they point to. This can be a bit troublesome if the directory where the connection files are located is somewhere you don't own, and you may need to be root.
After you have completed the above process, you should make sure to always start the server while logged in as mysqladm or root. In the latter, be sure to specify the --user=mysqladm option to enable the server to switch its user ID. to mysqladm (also applies to the system startup process).
The --user option was introduced in MySQL 3.22. If you have an older version, you can use the su command to tell the system to run the server under a specific user when running as root.
Method to start the server
After we determine the account used to run the server, you can choose how to arrange to start the server. You can run it manually from the command line or automatically during system boot. There are three main methods for starting the server:
Directly call mysqld.
This may be the least commonly used method, and it is recommended not to use it more, so this article will not introduce it in detail.
Call the safe_mysqld script.
safe_mysqld attempts to determine the location of the server program and data directories. The server is then called with options reflecting these values. safe_mysqld relocates the standard error device from the server to an error file in the data directory so that there is a record of it. After starting the server, safe_mysqld also monitors it and restarts it if it dies. safe_mysqld is commonly used on BSD-style Unix systems.
If you start sqfe_mysqld as root or during system boot, the error log is owned by root, which may cause a "permission denied" error when you later try to call safe_mysqld as an unprivileged user. DeleteError log and try again.
Call the mysql.server script.
This script starts the server via safe_mysqld.mysql.server, which is intended for use on System V start and stop systems that contain several files that are included in the machine entry or exit of a given The script directory used when running the level. It can use a start or stop parameter point to indicate whether you want to start or stop the server.
The safe_mysqld script is installed in the bin directory of the MySQL installation directory, or can be found in the scripts directory of the MySQL source code distribution. The mysql.server script is installed in the share/mysqld directory under the MySQL installation directory or can be found in the support_files directory of the MySQL source code distribution. If you want to use them, you need to copy them to the appropriate directory.
For BSD-style systems (FreeBSD, OpenBSD, etc.), there are usually several files in the /etc directory to initialize services during boot. These files usually have names starting with "rc", and it is possible Consisting of a file called "rc.local" (or something similar), specifically used to start locally installed services. On such a system, you might start the server by adding a line similar to the following to the rc.local file (if the safe_mysqld directory is different on your system, just modify it):
if [ -x /usr/local/bin/safe_mysqld ]; then
/usr/local/bin/safe_mysqld &
fi
For System V style systems, you can pass mysql .server is placed in the appropriate startup directory under /etc to install it. If you're running Linux and installing MySQL from an RPM file, this is already done for you, otherwise install the script in the main startup directory and place the connection to it in the appropriate runlevel directory. You can also make the script only startable by root.
The directory layout of startup files varies from system to system, so you need to check to see how your system organizes them. For example, on Linux PPC, the directories are /etc/rc.d and /etc/rc.d/rc3.d, so you can install the script like this:
#cp mysql.server /etc/rc.d /init.d
#cd /etc/init.d
#chmod 500 mysql.server
#cd /etc/rc.d/rc3.d
#ln -s ../init .d/mysql.server S99mysql
On solaris, the main script directory is /etc/init.d, and the run-level directory is /etc/rd2.d, so the command looks like this:
#cp mysql.server /etc/rc.d/init.d
#cd /etc/init.d
#chmod 500 mysql.server
#cd /etc/rc2.d
# ln -s ../init.d/mysql.server S99mysql
When the system starts, the S99mysql script will automatically be called with a start parameter. If you have the chkconfig command (available on Linux), you can use it to help install the mysql.server script instead of manually running the above command as above.
Specify startup options
If you want to specify additional startup options when the server starts, you have two methods. You can modify the startup script you use (safe_mysqld or mysql.server) and specify options directly on the line calling the server, or specify options in an options file. It is recommended that you specify options if possible in a global options file, which is usually located at /etc/my.cnf (Unix) or c:my.cnf (Windows).
Certain types of information cannot be specified with server options. For these you may need to modify safe_mysqld. For example, if your server cannot correctly select the local time zone and returns time values in GMT, you can set the TZ environment variable to give it an indication. If you start the server with safe_mysqld or mysql.server, you can add a time zone setting to safe_mysqld. Find the line that starts the server and add the following command before the line:
TZ=US/Central
export TZ
The syntax of the above command is Solaris, and the syntax may be different for other systems , please consult the relevant manual. If you do modify your startup script, keep in mind that the next time you install MySQL (such as upgrading to a new version), your changes will be lost unless you first copy the startup script elsewhere. After installing the new version, compare the old and new scripts to see what changes you need to rebuild.
Checking your tables at startup
In addition to arranging for your server to start at system boot, you may want to install the myisamchk and isamchk scripts to check your tables before the server starts. You may be restarting after a crash. It's possible that the table has been corrupted. Checking it before starting is a good way to find the problem.
The above is the detailed content of Teach you how to start and stop one of the Mysql services. For more information, please follow other related articles on the PHP Chinese website!