MySQL distributions on Unix and Unix-like system include a script named mysql.server, which starts the MySQL server using mysqld_safe. It can be used on systems such as Linux and Solaris that use System V-style run directories to start and stop system services. It is also used by the macOS Startup Item for MySQL.

mysql.server是官方针对Unix和类Unix系统二进制版本安装包当中包含的脚本,它是一个SHELL脚本,被用来启动、查看和停止mysqld进程服务。mysql.server其实上调用的是mysqld_safe命令。

更详细的关于mysql.server的说明可以参考官方文档:https://dev.mysql.com/doc/refman/5.7/en/mysql-server.html

本文使用的MySQL版本为5.7.21

# mysqld -V
mysqld Ver 5.7.21 for linux-glibc2.12 on x86_64 (MySQL Community Server (GPL))
  • 如果使用RPM包的安装方式进行安装MySQL后,mysql.server这个脚本会被放在/etc/init.d/下面,并且命名为mysqld或者mysql
  • 如果是二进制包的安装方式,则mysql.server放在二进制安装目录下support-files的目录下面。

主要用法

  • 1、启动mysqld服务
# mysql.server start
  • 2、查看mysqld状态
# mysql.server status
  • 3、停止mysqld服务
# mysql.server stop
  • 4、重启mysqld服务
# mysql.server restart
  • 5、平滑重启mysqld服务
# mysql.server reload

自定义

mysql.server是一个SHELL脚本,其中有一些选项在没有明确指定的时候是有默认值,比如basedir默认路径为/usr/local/mysql等。通常以二进制包进行安装的时候,有些路径需要自定义,否则mysql.server无法找到相应的路径,也就无法完成mysqld进程服务的管理。

可以通过VIM等编辑器对mysql.server脚本进行编辑与修改。

主要修改选项路径如下:

1、添加basedir、datadir和config配置

大概在mysql.server脚本的43行处。

43 # If you change base dir, you must also change datadir. These may get
44 # overwritten by settings in the MySQL configuration files.
45
46 basedir= #二进制包安装的目录
47 datadir= #数据文件所在的目录
48 config= #此处为新增选项,配置需要使用的参数文件路径

此处可以修改为:

basedir=/usr/local/mysql5.7

datadir=/data/mysql/data

config=/data/mysql/3306/my.cnf

2、指定mysqld的PID文件

 61 # The following variables are only set for letting mysql.server find things.
62
63 # Set some defaults
64 mysqld_pid_file_path=

此处可以修改为:

61 # The following variables are only set for letting mysql.server find things.
62
63 # Set some defaults
64 mysqld_pid_file_path=/data/mysql/3306/mysql.pid

3、注释解析默认参数文件方法

mysqld启动时,默认寻找的参数文件路径如下:

/etc/my.cnf ---> /etc/mysql/my.cnf ---> /usr/local/mysql/etc/my.cnf ---> ~/.my.cnf

mysql.server脚本默认会按照这个顺序去解析(通过my_print_defaults这个命令实现)这几个参数文件,而为了防止mysql.server去解析这几个参数文件当中的参数选项,这时还是通过修改mysql.server脚本选项来实现,以便于使用自定义的参数文件。

大概在mysql.server脚本的240行处。

229 #
230 # Read defaults file from 'basedir'. If there is no defaults file there
231 # check if it's in the old (depricated) place (datadir) and read it from there
232 #
233
234 extra_args=""
235 if test -r "$basedir/my.cnf"
236 then
237 extra_args="-e $basedir/my.cnf"
238 fi
239
240 parse_server_arguments `$print_defaults $extra_args mysqld server mysql_server mysql.server`

可以注释240行,如下:

…………省略…………
237 extra_args="-e $basedir/my.cnf"
238 fi
239
240 # 注释这行
240 # parse_server_arguments `$print_defaults $extra_args mysqld server mysql_server mysql.server`

这样当通过mysql.server来启动mysqld时就不会去解析默认路径下的参数文件

4、修改mysqld_safe启动时的参数文件

默认情况下mysqld_safe启动时是没有选项--defaults-file指定参数的。可以添加这个选项指定所需的参数路径。

大概在mysql.server脚本的264行处。

264 # Give extra arguments to mysqld with the my.cnf file. This script
265 # may be overwritten at next upgrade.
266 $bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null &
267 wait_for_pid created "$!" "$mysqld_pid_file_path"; return_value=$?
268

可以添加conf配置:

# 此处配置的参数文件为前面新增选项的参数文件
266 $bindir/mysqld_safe --defaults-file="$config" --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null &

至此,现在可以通过mysql.server来管理mysqld进程服务的状态了,也可以放在/etc/init.d/下当作系统服务进行管理,当然前提是这个脚本必须具备可执行权限。

参考

☆〖本人水平有限,文中如有错误还请留言批评指正!〗☆

MySQL Tools 之 mysql.server 脚本运用的更多相关文章

  1. Windows Server 脚本记录Apache、Mysql 每分钟并发数

    打开windows server 计划任务管理器.定时执行如下的Bat脚本即可. 在D盘新建一个monitor文件夹,创建ApacheMysql.bat文件.内容如下: 在monitor文件夹中新建m ...

  2. CentOS6.7下使用非root用户(普通用户)编译安装与配置mysql数据库并使用shell脚本定时任务方式实现mysql数据库服务随机自动启动

    CentOS6.7下使用非root用户(普通用户)编译安装与配置mysql数据库并使用shell脚本定时任务方式实现mysql数据库服务随机自动启动1.关于mysql?MySQL是一个关系型数据库管理 ...

  3. 用户中心mysql数据库表结构的脚本

    /* Navicat MySQL Data Transfer Source Server : rm-m5e3xn7k26i026e75o.mysql.rds.aliyuncs.com Source S ...

  4. 【mysql】之MySQL导入sql脚本错误:2006 - MySQL server has gone away

    到如一些小脚本很少报错,但最近导入一个10+M的SQL脚本,却重复报错: Error occured at:2014-03-24 11:42:24Line no.:85Error Code: 2006 ...

  5. MySQL分库分表备份脚本

    MySQL分库备份脚本 #脚本详细内容 [root@db02 scripts]# cat /server/scripts/Store_backup.sh #!/bin/sh MYUSER=root M ...

  6. 安装MySQL -- SuSE Linux Enterprise Server 11 SP3

    1.准备工作从MySQL官网上分别下载mysql服务器端于客户端包: MySQL-server-5.5.49-1.sles11.x86.rpm MySQL-client-5.5.49-1.sles11 ...

  7. 解决mysql漏洞 Oracle MySQL Server远程安全漏洞(CVE-2015-0411)

    有时候会检测到服务器有很多漏洞,而大部分漏洞都是由于服务的版本过低的原因,因为官网出现漏洞就会发布新版本来修复这个漏洞,所以一般情况下,我们只需要对相应的软件包进行升级到安全版本即可. 通过查阅官网信 ...

  8. MySQL单机单实例安装脚本(转载)

    说明:使用mysql generic tar.gz包快速安装mysql 三个文件installation_of_single_mysql.sh.template_install-my.cnf.mysq ...

  9. MySQL源码安装一键脚本

    #红色部分根据自己的需求来定义#!/bin/bash #卸载系统自带的Mysql /bin/rpm -e $(/bin/rpm -qa | grep mysql|xargs) --nodeps /bi ...

随机推荐

  1. Asp.Net Core 开发之旅之NLog日志

    NLog已是日志库的一员大佬,使用也简单方便,本文介绍的环境是居于.NET CORE 3.0 1.安装 Install-Package NLog.Web.AspNetCore 2.创建配置文件 在we ...

  2. nginx配置中root和alias的区别

    例:访问http://127.0.0.1/download/*这个目录时候让他去/opt/app/code这个目录找. 方法一(使用root关键字): location / { root /usr/s ...

  3. (二)Amazon Lightsail 部署LAMP应用程序之部署单片LAMP应用程序

    部署单片LAMP应用程序 简介:通过复制应用程序代码并提供链接PHP前端和本地MySQL数据库的参数,将LAMP对战应用程序部署到先前启动的Lightsail实例中.完成后,Apache/PHP前端和 ...

  4. django DeleteView

    DeleteView from django.urls import reverse, reverse_lazy from django.contrib.auth.mixins import Logi ...

  5. sql 代码优化

    1. where 执行顺序:右→左,筛选多的放右边:计算难度小的放右边,sql老版本(只在基于规则的优化器中有效,新版本基于代价不存在这个问题): 2. 少用子查询: 3. union快,表结构得一致 ...

  6. git--github使用

    什么是github GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名GitHub. GitHub于2008年4月10日正式上线,除了Git代码仓 ...

  7. Python爬取信息管理系统计算学分绩点

    试手登录了下我们学校的研究生信息管理系统,自动计算学分绩点 # -*- coding:utf-8 -*- import urllib import urllib2 import re import c ...

  8. 有关tab页的

    有关tab页的 1.静态的 2.动态的可以删除的 3.删除右侧,左侧,全部,除了自己以外的. 4.多了可以自动伸缩. 5.带shown事件.可以反向影响菜单去.

  9. NXP官方的i.mx6ul板级uboot源码适配

    1.前言 CoM-P6UL是盈鹏飞科技有限公司基于NXP原厂I.MX6UL芯片生产研发的核心板,本文将对CoM-P6UL适配NXP的基于Linux4.1.15版本的uboot板级源码. 2.开发环境 ...

  10. 微博Feed流

    一.微博核心业务图 二.微博的架构设计图 三.简述 先来看看Feed流中的一些概念: Feed:Feed流中的每一条状态或者消息都是Feed,比如微博中的一条微博就是一个Feed. Feed流:持续更 ...