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. mysql connector c++ 1.1 安装

    mysql connector c++ 1.1 安装 前提:boost安装完毕 注意:8.0版本的源码用此方法,编译不过.所以要编译8.0的同学请绕行. 1,下载源码 git clone https: ...

  2. cobalt strike入门和防护

    1.入门: https://blog.csdn.net/localhost01/article/details/86741124 2.cs的防护: 由于关乎渗透人员自身的安全,建议大家好好看看,这里贴 ...

  3. 如何使用DOM4j+xpath 解析

    1.首先去dom4j官网下载一个对应版本的JAR包 XML的配置文件 导入一个config.xml文件 下面是dom4j+xpath解析XML文件

  4. MD文件图片base64自动编码

    看工具链接请直接将文章拉到最后.. 概述 不知道你在使用markdown写文章的时候有没有遇到过这样的烦恼, 文件写完了, 想将写完的文章粘贴到博客的时候, 你满心欢喜的复制粘贴, 但是发现图片根本复 ...

  5. 扎西平措 201571030332《面向对象程序设计 Java 》第一周学习总结

    <面向对象程序设计(java)>第一周学习总结 正文开头: 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 ...

  6. HTML与CSS学习笔记(4)

    1.浏览器前缀 浏览器厂商以前就一直在实时CSS3,但它还未成为真正的标准.为此,当有一些CSS3样式与法还在波动的时候,他们提出了针对不同浏览器的前缀,来解决兼容性问题. 即:CSS3去兼容不同的浏 ...

  7. layUI学习第一日:myeclipse中使用layUI

    第一步:下载layUI,网址:https://www.layui.com/ 第二步:查看layUI解压后的内容,和官网解释各个文件夹的内容 第三部:在myeclipse中新建一个web project ...

  8. 在线web软件

    编程 Compiler Explorer SharpLab 着色器 shadertoy 腾讯文档 word  excel  ppt ... 思维导图 MindMaster ProcessOn 流程图. ...

  9. 一种单机支持 JavaWeb 容器万级并发的设想

    当前的大部分 Java web 容器基于 Bio 线程模型,例如常见的 tomcat ,默认 200 线程,即 200 连接.由此带来的问题是,如果想提高并发,或者提高资源利用率,就得加大线程数. 如 ...

  10. Python连载34-信息队列

    一.生产者消费者模型 1.一个模型.可以用来搭建消息队列:queue是一个用来存放变量的数据结构,特点是:先进先出 import threading import time import queue ...