• 技术文章 >数据库 >mysql教程

    service命令管理mysql启动和停止的方法介绍

    不言不言2019-03-22 11:26:25转载1960
    本篇文章给大家带来的内容是关于service命令管理mysql启动和停止的方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

    安装完成mysql之后,每次启动和停止都很麻烦,有时候记不住去网上搜一下,看见大家都用service来进行服务的管理,试了一下,果然好用。推荐大家也要这么用。

    启动和停止mysql服务

    # 启动
    /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/tmp/mysql.sock
    # 停止
    kill `cat /usr/local/mysql/var/mysqld.pid`

    这样启动和停止需要记住mysql的路径和pid的保存位置,因此比较麻烦。

    service 系统服务管理

    service命令用于管理系统服务,比如启动(start),停止(stop),重启(restart),查看状态(status)等。service命令本身就是一个shell脚本,用于方便的调用该脚本来完成任务,它在/etc/init.d/目录下查找指定的服务脚本。

    相关的命令还有:

    chkconfig:用于查看、设置服务的运行级别

    ntsysv:用于设置服务的自启动

    service运行指定服务(称为System V初始脚本),只保留LANG和TERM两个环境变量,并设置当前路径为/。如果一个服务脚本想要由service进行管理,至少需要支持start和stop命令,并将脚本保存在/etc/init.d/目录下。

    service的使用方式

    ## 命令格式
    Usage: service < option > | --status-all | [ service_name [ command | --full-restart ] ]
    
    # 查看指定服务的命令行使用帮助
    service <service>
    ## mysqld 举例
    $ service mysqld
    Usage: mysqld  {start|stop|restart|reload|force-reload|status}  [ MySQL server options ]
    
    # 启动、停止、重启指定服务
    service <service> start|stop|restart
    ## mysqld举例restart,即先执行stop再执行start命令
    $ service mysqld restart
    Shutting down MySQL..                                      [  OK  ]
    Starting MySQL.                                            [  OK  ]
    
    # 显示指定服务的状态
    $ service mysqld status
    MySQL running (27390)                                      [  OK  ]
    
    # 显示所有服务的状态
    service --status-all
    
    # 查看系统服务列表,以及每个服务的运行级别
    chkconfig --list
    
    # 设置指定服务开机时是否自动启动
    chkconfig <service> on|off
    
    # 以全屏幕文本界面设置服务开机时是否自动启动
    # 必须以root启动,空格切换状态,tab切换按钮,上下鼠标移动光标
    ntsysv

    除了用mysqld示例外,我们修改了主机名、IP地址等信息时,也要经常重启网络生效,此时可以调用:

    service network status|restart

    用service管理mysqld服务

    我们已经了解了基础的知识,现在就可以开始改造了,首先要在你的安装目录里找到mysql.server文件。

    $ locate mysql.server
    /usr/local/mysql/support-files/mysql.server

    这个文件在安装时初始化,其实也就是一个脚本文件,支持输入不同的参数执行不同的功能,我们可以查看它的start函数:

    # 根据输入的命令执行不同的脚本,首先判断是否为start
    case "$mode" in
      'start')
        # Start daemon
    
        # Safeguard (relative paths, core dumps..)
        cd $basedir
    
        echo $echo_n "Starting MySQL"
        # 查看该bin/mysqld_safe命令是否存在,如果不存在,就直接报错:找不到
        if test -x $bindir/mysqld_safe
        then
          # Give extra arguments to mysqld with the my.cnf file. This script
          # may be overwritten at next upgrade.
          # 直接执行mysqld_safe命令,并传入参数,然后创建pid文件
          $bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null &
          wait_for_pid created "$!" "$mysqld_pid_file_path"; return_value=$?
    
          # Make lock for RedHat / SuSE
          if test -w "$lockdir"
          then
            touch "$lock_file_path"
          fi
    
          exit $return_value
        else
          log_failure_msg "Couldn't find MySQL server ($bindir/mysqld_safe)"
        fi
        ;;
    
      'stop')

    然后将它复制到/tmp/init.d/目录下:

    cp /usr/local/mysql/support-files/mysql.server /tmp/init.d/mysqld

    此时,就可以直接调用service来进行启动了:

    service mysqld start

    遇到的一些问题

    上面的理论很简单,但在启动的过程中还是遇到了一些问题,解决问题最简单的方法就是Google+查看日志文件,这两个方法可以非常快的速度定位并解决。

    配置文件被忽略

    直接看启动时的报错信息:

    $ service mysqld start
    Warning: World-writable config file '/etc/my.cnf' is ignored
    Starting MySQL.Warning: World-writable config file '/etc/my.cnf' is ignored

    直接看报错原因,提示的是全局可写的配置文件被忽略。这个错误是指该配置文件可以被所有用户修改,因此有被恶意篡改的可能,因此不会引入这个文件的配置,忽略。

    解决方案就是将该文件改为用户和用户组可读写,其他用户只读不可写:

    chmod 664 /etc/my.cnf

    PID文件无法创建

    直接看报错信息:

    $ service mysqld start
    Starting MySQL.The server quit without updating PID file (/usr/var/mysql/var/mysqld.pid).

    报错原因显示,启动MySQL时意外退出,因为没有更新PID文件。

    这个时候,可能有些人看不太懂,没关系,我们直接看错误日志:

    2019-03-21 22:29:45 32896 [ERROR] /usr/local/mysql/bin/mysqld: Can't create/write to file '/usr/var/mysql/var/mysqld.pid' (Errcode: 2 - No such file or directory)
    2019-03-21 22:29:45 32896 [ERROR] Can't start server: can't create PID file: No such file or directory

    这个日志就很清楚的写明了无法创建这个mysqld.pid文件,要么是权限问题,要么是路径不存在的问题,后面看发现是路径写错了,更改为正确的路径即可。

    错误日志路径的设置:

    $ vim my.cnf
    [mysqld]
    basedir = /usr/local/mysql
    datadir = /usr/local/mysql/data
    pid-file = /usr/var/mysql/var/mysqld.pid
    log-error = /user/local/mysql/log/mysql.err

    log指令被废弃

    解决了上面的问题,我们继续执行,依然发现同样的报错信息,但是日志文件却不同了:

    $ service mysqld start
    Starting MySQL.The server quit without updating PID file (/usr/var/mysql/var/mysqld.pid).
    
    # 日志文件
    2019-03-21 22:37:33 0 [ERROR] /usr/local/mysql/bin/mysqld: ambiguous option '--log=/usr/local/mysql/log/mysql.log' (log-bin, log_slave_updates)
    2019-03-21 22:37:33 0 [ERROR] Aborting

    发现日志报错信息提示:模糊的选项--log,这个不太明白,Google一下就能看到原因:--log指令已经被废弃很久了,现在使用--general-log来代替。修改my.cnf配置文件即可:

    $ vim my.cnf
    [mysqld]
    general-log = /user/local/mysql/log/mysql.log

    启动成功

    解决了上面这些问题,终于可以成功启动了,这个时候我们可以方便的对mysqld服务进行启停以及reload了:

    $ service mysqld start
    Starting MySQL.                                            [  OK  ]

    总结

    Service服务管理工具,可以帮助我们快速的启停应用程序。在Mysql启动的过程中,掌握日志文件的查看和Google的搜索,对我们来说是最大的助力。

    本篇文章到这里就已经全部结束了,更多其他精彩内容可以关注PHP中文网的MySQL教程视频栏目!

    以上就是service命令管理mysql启动和停止的方法介绍的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:segmentfault,如有侵犯,请联系admin@php.cn删除
    上一篇:mysql优化的思路介绍 下一篇:MySQL的MVCC的用法介绍
    大前端线上培训班

    相关文章推荐

    • AngularJS的自定义服务详解,factory、service、provider的用法介绍• boost::io_service解读• 微信小程序如何调用后台service(图文教程)• nodejs实现webservice的问题分析

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网