linux系统设置程序开机启动(以mysql为例)

来源:互联网 发布:ubuntu zip压缩命令 编辑:程序博客网 时间:2024/06/06 13:15
现在最新版的mysql都是release版本,即不需要configure、make、make install命令来配置安装的。解压之后直接复制到目标目录下,然后按照目录中的INSTALL-BINARY文件中所指示的进行配置即可。

1. > groupadd mysql
2. > useradd -r -g mysql mysql
这两步的作用是创建必需的组和所有者(其实这两步的具体作用我也不是很了解,因为我一直都是使用root账号来操作的)。
注意的是,有些linux系统(我遇到过的有redhat、centos)中都会自带mysql,但是版本一般比较旧。如果删除旧版本安装新版本,最好在/etc/passwd中将已经有的mysql用户删除掉(当然应该也可以沿用系统自动创建的组和用户)。

3. > cd /usr/local/mysql // 这个是我通常用的放置用户程序的路径
4. > chown -R mysql .
5. > chgrp -R mysql . // 将文件夹的所有者和所有者所在的组设置为mysql
6. > scripts/mysql_install_db --user=mysql // 安装
7. > chown -R root . // 将文件夹的所有者改回root
8. > chown -R mysql data // 将存放数据库文件的目录所有者设置为mysql
(我还是觉得上面几步太折腾了,因为我一直都是使用root操作。不过这几步的作用马上就显现出来了。。。)

9. > cp support-files/my-large.cnf /etc/my.cnf
关于这步以后再详细介绍,这里只要知道是创建数据库配置文件即可

10. > bin/mysqld_safe --user=mysql &
启动mysql,并使之在后台运行,启动时设置该进程的用户为mysql。
这里多解释几句:
首先,mysql的守护进程是mysqld,bin目录下也有这个命令。但实际上用户很少与之直接交互,而是通过一个包装程序mysqld_safe与之交互。mysqld_safe会在守护进程mysqld启动之前添加一些与安全有关的日志特性和系统集成特性(具体是哪些我也不知道,暂时应该也不需要知道。。。)。
其次,在启动守护进程的时候,将进程用户设置为mysql。mysql的守护进程应该按非root用户运行,这样在攻击者通过mysql安全漏洞成功入侵到服务器时,可以将破坏减少到最低程度

11. > cp support-files/muysql.server /etc/init.d/mysql.server
这一步的作用是设置mysql开机自动启动。其中mysql.server是一个脚本文件,太长了没有仔细研究,其功能就是进行一些设置后启动mysql。



下面来讲一下和系统启动相关的目录 ==> /etc/rc.d
:rc是run control的缩写。

在/etc/rc.d目录下有这样几个目录:
init.d
rc0.d
rc1.d
rc2.d
rc3.d
rc4.d
rc5.d
rc6.d

init.d目录下存放的是系统启动时可能会运行的脚本,其中一些脚本的功能是启动安装在系统中的程序。
rcN.d(N=0,...,6)目录中存放的都是到init.d目录下脚本的符号链接(软链接)
其中N表示的是系统的运行级别。关于运行级别,可以查看/etc/inittab文件中的开头部分:

************************************************************************************************

# Default runlevel. The runlevels used by RHS are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
#
id:5:initdefault:

************************************************************************************************
附上中文版:

# 缺省的运行级,RHS 用到的级别如下:
# 0 - 停机(千万不要把initdefault 设置为0 )
# 1 - 单用户模式
# 2 - 多用户,但是没有 NFS 
# 3 - 完全多用户模式
# 4 - 没有用到
# 5 - X11 
# 6 - 重新启动 (千万不要把initdefault 设置为6 )
************************************************************************************************


这段脚本介绍了7种运行级别,并设置默认运行级别为5(一般的linux系统X11图形界面的运行级别是5)。
init进程(ID为1的进程)在系统自举时会读取inittab文件,确定系统的运行级别。

rcN.d目录下的符号链接指向的是该运行级别下系统要运行的脚本。其中符号链接分为两种,一种是以S开头的,表示要启动的服务;另一种是以K开头的,表示要关闭的服务
这里我们只关注如何设置开机自动启动,所以只看S开头的符号链接。仍是以mysql为例:

首先运行命令“chkconfig --list”查看系统服务(这里只给出mysql的那一行):

mysqld          0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭

可以看到在运行级别为2-5中,mysql都是默认启动的。在rc2.d-rc5.d目录下,我们可以找到如下文件:

lrwxrwxrwx 1 root root 16 09-07 03:29 S64mysqld -> ../init.d/mysqld

S64mysqld是指向init.d目录下mysqld脚本的链接。S表示启动(start)64表示启动的顺序,因为有些服务的启动要依赖于其他服务,这个序号是允许重复的,如果我们要添加新的开机启动项,通常将序号设置为99。


通常设置开机启动项的一个简单的方法是使用chkconfig命令,
> chkconfig mysqld off
该命令关闭了mysql开机启动。可以通过“chkconfig --list”命令查看,或者直接去rc5.d目录下,这时候会发现S64mysqld变成了K64mysqld。
若要恢复mysql开机启动,运行:
> chkconfig mysqld on


最后一部分说的有点乱,部分是参考下面两篇文章:
init.d,rc.d详解 Linux运行时详解
/etc/rc.d/init.d和/etc/init.d 联系区别

0 0
原创粉丝点击