MySQL在类Unix系统上安装时包含一个mysql.server启动脚本,它通过mysqld_safe命令来启动MySQL服务,但我们通常把这个启动脚本重命名为mysqld或者mysql。
这个启动脚本在有些系统上安装时被默认注册,很方便使用,但在其他系统上因为没有必要就不是默认注册,需要我们手动注册服务。
01mysql.server启动脚本
我们可以很方便的调用这个启动脚本:
shell>mysql.server start | stop
mysql.server启动脚本先进入MySQL的注册目录,然后调用mysqld_safe命令,调用时会默认使用/etc/my.cnf;~/my.cnf两个配置文件,所以如果你想要更精确的控制启动,可以修改相关的配置文件。
我们可以查看启动脚本的内容:
shell> vim home/work/mysql/support-files/mysql.server
# If you install MySQL on some other places than usr/local/mysql, then you
# have to do one of the following things for this script to work:
#
# - Run this script from within the MySQL installation directory
# - Create a etc/my.cnf file with the following information:
# [mysqld]
# basedir=
# - Add the above to any other configuration file (for example ~/.my.ini)
# and copy my_print_defaults to usr/bin
# - Add the path to the mysql-installation-directory to the basedir variable
# below.
#
basedir=/home/work/mysql/
datadir=/home/work/mysql/data/
可以看到默认的安装位置是/usr/local/mysql,而我们很多人的安装路径可能跟这个不一致,如果你需要通过该启动脚本启动,需要在这个启动文件中修改basedir/datadir的位置,默认为空。
02 启动选项
在使用时,启动脚本会从配置文件中读取[mysql.server]和[mysqld]两处配置块的启动选项,因此我们一般设置为:
[mysqld]
datadir=/home/work/mysql/data/
socket=/home/work/mysql/tmp/mysql.sock
port=3306
user=mysql
pid-file=/home/work/mysql/tmp/mysqld.pid
[mysql.server]
basedir=/home/work/mysql
mysql.server启动脚本在命令行只支持start|stop两个参数,更多的参数通过配置文件来指定:
#只支持这4种参数
[mysql.server]
basedir=MySQL安装目录
datadir=MySQL数据目录
pid-file=存储MySQL服务进程ID的文件
service-startup-timeout=等待启动成功的超时时间,默认为900s,缺省时无限等待,超时时报错退出
如果pid-file不指定,默认在data目录下创建${host_name}.pid文件,在指定时[mysqld_safe]配置块中的优先级最高,但启动脚本读取的是[mysqld]配置块,因此如果你使用启动脚本,可以在两个配置块里配置相同的内容。 作者:赵帅强
03 使用mysqladmin关闭服务
除了启动脚本进行启动和关闭之外,我们还可以这么关闭服务:
shell> ~/mysql/bin/mysqladmin shutdown -p
Enter password: (这里输入root密码)
04 注册服务
简单来说就是将启动脚本放在系统级service服务下,并重命名为mysqld:
shell>ln -S ~/mysql/support-files/mysql.server etc/init.d/mysqld
shell>service mysqld start|stop|status
具体注册详情参考我的另一篇文章:用service命令管理mysql启停。 作者:赵帅强
05 开机自启动
我们也可以设置相关的开机自启动:
shell>chkconfig --add mysqld
shell>chkconfig --list
06 参考资料
4.3.3 mysql.server — MySQL Server Startup Script: https://dev.mysql.com/doc/refman/8.0/en/mysql-server.html
用service命令管理mysql启停: