centos7中 把服务加入开机自动启,比如把mysql加入开机自启动,需要在/usr/lib/systemd/system/这个目录下编写mysqld.service文件,具体参照网上资料或之前整理的资料,其他服务也一样。但是mysqld.service 配置文件中 的PrivateTmp=true,需要改成false,否则每次服务器重启后,虽然mysql服务起来了,进程也起来了,但是连不上 ,如果mysql的配置文件中指定的socket文件路径是/tmp/mysql.sock 的话 会提示找不到/tmp/mysql.sock 文件,原因就是这里设置PrivateTmp=true,在服务启动时会在/tmp目录下生成类似systemd-private-433ef27ba3d46d8aac286aeb1390e1b-apache.service-RedVyu的文件夹,用于存放mysql的临时文件,mysql.sock 文件也被放到这里了,才导致找不到 /tmp/mysql.sock 文件。但是做软连接也不行,因为 每次服务器重启 后 生成的类似systemd-private-433ef27ba3d46d8aac286aeb1390e1b-apache.service-RedVyu的文件夹也会变。
mysqld.service 配置文件如下:
[Unit]
Description=mysqld
After=network.target
[Service]
Type=forking
ExecStart=/etc/init.d/mysqld start
ExecReload=/etc/init.d/mysqld restart
ExecStop=/etc/init.d/mysqld stop
PrivateTmp=false
[Install]
WantedBy=multi-user.target
如果之前有创建过mysqld.service 文件,当使用chkconfig --add mysqld 后 再使用 chkconfig --list 是查看不到有mysql的这一列的,当使用 chkcnfig mysqld on 命令时会提示如下:
[[email protected] ~]# chkconfig mysqld on
注意:正在将请求转发到“systemctl enable mysqld.service”。
Created symlink from /etc/systemd/system/multi-user.target.wants/mysqld.service to /usr/lib/systemd/system/mysqld.service.
这就是相当于转为centos7的方法将服务加入启动的。会在/etc/systemd/system/multi-user.target.wants 目录下创建一个软连接 ,链接到/usr/lib/systemd/system/mysqld.service。
如果不想使用centos7这种方法把服务加入自启的话,可以将之前创建的mysqld.service 删掉,然后再执行 chkconfig --add mysqld ,chkconfig mysqld on ,再使用chkconfig --list 查看就能看到mysql了
重启服务器后 mysql正常启动,正常生产/tmp/mysql.sock 文件。能够正常连接
原文:http://10892987.blog.51cto.com/10882987/1957170