以非 root 用户身份使用 Systemd 管理 MySQL

为了方便非 root 用户,例如 mysql 操作系统用户,使用依赖 Systemd 的操作系统级系统管理工具停止和启动 MySQL 服务器。
sudoers 文件中的以下条目将允许操作系统用户 mysql 通过操作系统管理包装器停止和启动 mysql 服务器。

# visudo
## MySQL Admin
Cmnd_Alias MYSQLADMIN = /usr/bin/systemctl stop mysqld, /usr/bin/systemctl start mysqld,/usr/bin/systemctl restart mysqld
mysql ALL=MYSQLADMIN

作为 mysql OS 用户,现在可以按预期停止/启动服务。

$ sudo systemctl stop mysqld
$ systemctl status mysqld
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: inactive (dead) since Mon 2016-06-06 12:34:28 AEST; 1s ago
Process: 11633 ExecStart=/usr/sbin/mysqld --daemonize $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
Process: 11617 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 11637 (code=exited, status=0/SUCCESS)
$ sudo systemctl start mysqld
$ systemctl status mysqld
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2016-06-06 12:34:38 AEST; 1s ago
Process: 11697 ExecStart=/usr/sbin/mysqld --daemonize $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
Process: 11682 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 11701 (mysqld)
CGroup: /system.slice/mysqld.service
└─11701 /usr/sbin/mysqld --daemonize

注意:MySQL 5.6 本身不使用 systemd 包装器,即使在受支持的操作系统上也是如此。
它仍将使用 SysV 脚本,通常在 /etc/init.d 中。
这些可以在没有任何特殊权限的情况下停止/启动。
但是,需要特别注意,如果 DB 计划在系统启动时启动,如在这种情况下,可能存在根文件权限,例如锁定文件/错误日志。

日期:2020-09-17 00:14:45 来源:oir作者:oir