mysql如何做成系统服务 linux系统

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql如何做成系统服务 linux系统相关的知识,希望对你有一定的参考价值。

使用解压缩版的mysql,改变了my.cnf的位置,
读取/usr/local/mysql3307/my3307.cnf作为默认的mysql,启
动的时候使用命令bin/mysql --defaults-file=/usr/local/mysql3307/my3307.cnf,
现在希望将mysql做成系统服务,网上的办法是将mysql.server复制到init.d下面,
不过我更过my.cnf文件,启动老是报错,谁有相关文档,借来一观
1.datadir=/var/lib/mysql5
2.conf=/etc/my5.cnf
3.把"$bindir/mysqld_safe --datadir=$datadir --pid-file=$server_pid_file $other_args >/dev/null 2>&1 &"替换为(双引号中的)
"$bindir/mysqld_safe --defaults-file=/etc/my3307.cnf --datadir=$datadir --pid-file=$server_pid_file $other_args >/dev/null 2>&1 &"(双引号中的)

进入解压出来的文件夹,看看里面有没有这个文件 support-files/mysql.server
cp support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
就可以变成系统服务,你可以在ntsysv里面看到。

解压出来应该有几个默认的 .cnf ,查看一下 ls *.cnf追问

找个是可以,但是这种方法读取的依旧是/etc/my.cnf文件啊,而我由于多装了几个mysql,需要指定配置文件位置为:/usr/local/mysql3307/my3307.cnf

这需要更改mysql.server的内容吗?

找个是可以,但是这种方法读取的依旧是/etc/my.cnf文件啊,而我由于多装了几个mysql,需要指定配置文件位置为:/usr/local/mysql3307/my3307.cnf

这需要更改mysql.server的内容吗?

追答

service方式启动的话,默认是读取/et/my.cn然后再读安装目录的my.cnf
如要你要用多个mysql并存:
1、命令行的方式,用参数指定cnf启动
2、修改mysql.server,然后复制多个mysql.server,比如mysql.server1 mysql.server2 到启动目录,然后mysqld1 mysql2多个服务。

追问

嗯 关键是要如何修改mysql.server呢,看到这种方法:提问中补充了

不过试验了一下还是不对啊

参考技术A 你看看 mysql.server 的格式,估计是你找的这个文件和你的服务器启动参数不一致。追问

默认读取的是/etc/my.cnf,我需要它读取/usr/local/mysql3307/my3307.cnf,就这个区别,做系统服务老是报错,要不就是rpm装的mysql用不了了

追答

你看看 mysql.server 内容改一下就行了。这东西应该就在这个文件里面直接有写。

在Linux中将脚本做成系统服务

  有一些情况下,我们需要将某些脚本作为系统服务来运行。比如,在我使用workerman框架开发php程序时,需要使用管理员权限来运行,而且需要开机自行启动程序提供服务。这个时候将启动程序写成服务就可以很方便使用了,而且在使用时也可以直接sudo service xxxx start,不需要手动敲出来复杂的文件路径。(在不使用小技巧的时候可能要这样做: sudo php /path/to/file start -d)生命苦短,多用些小技巧可能提高我们生命的效率,呵呵扯远了。我们直接来看如何自己写一个,并将之作为系统服务,且开机自动运行。

  首先,作为服务我们通常需要以下的功能:{start|stop|restart|status},接下来我就使用一段简单的bash脚本做一个演示:

  1.编辑我们的脚本文件

  vim myservice

  脚本内容:

  

#!/bin/bash
#
#description: a demo
#chkconfig:2345 88 77
lockfile=/var/lock/subsys/myservice
touch $lockfile
# start 
start(){
        if [ -e $lockfile ] ;then
                echo "Service is already running....."
                return 5
        else
                touch $lockfile
                echo "Service start ..."
                return 0
        fi
}
#stop
stop(){
        if [ -e $lockfile ] ; then
                rm -f $lockfile
                echo "Service is stoped "
                return 0
        else
                echo "Service is not run "
                return 5
        fi

}
#restart 
restart(){
        stop
        start
}
usage(){
        echo "Usage:{start|stop|restart|status}"
}
status(){
        if [ -e $lockfile ];then
                echo "Service is running .."
                return 0
        else
                echo "Service is stop "
                return 0
        fi
}
case $1 in
start)
        start
        ;;
stop)
        stop
        ;;
restart)
        restart
        ;;
status)
        status
        ;;
*)
        usage
        exit 7
        ;;
esac

  

  之后,我们将脚本复制至/etc/init.d文件夹中

  #cp myservice /etc/init.d

  将我们的myservice.sh添加至chkconfig

  #chkcofig --add myservice

  这样,在2345的运行级别下,myservice就会开机自动开启服务了,我们在任意目录下面都可以直接运行脚本 service myservice start

以上是关于mysql如何做成系统服务 linux系统的主要内容,如果未能解决你的问题,请参考以下文章

在Linux中将脚本做成系统服务

如何把exe文件做成系统服务的形式

MYSQL 如何做镜像

怎么把exe做成服务

linux如何添加服务为系统服务快速启动或关闭

mysql