当我通过 Yum 安装 MySQL 时,它会自动创建mysql
操作系统用户和组。然后mysqld
作为mysql
(而不是作为根)执行,并且数据目录中的所有文件都归mysql:mysql
.
这显然是正确的安全做法,我理解为什么会发生这种情况并且不想破坏它。
当我管理 MySQL 系统时,我刚刚养成了sudo
在需要与受保护文件交互时使用的习惯(例如,使用 读取二进制日志mysqlbinlog
、创建备份 tarball 等)。
将我的操作系统用户添加到 mysql 组是否也有效?有没有我没有考虑到的主要缺点?
当使用 mysqlbinlog 从 MySQL 导出作业信息时,使用 sudo 对我来说也很方便,因为它通常是为了修复或排除故障,时间是一个问题。
如果您打算重新导入从 MySQL 中提取的数据,那么您有时需要解决权限问题。当使用 root 帐户创建转储文件时,创建的文件假定 root 帐户的权限,MySQL 很难访问这些文件。(我也避免将粘性权限作为一种解决方法,因为当您不定期处理它时它会变得混乱)
我可能会建议:
对于常规管理任务,我倾向于创建单独的操作系统“服务”帐户来与 mysql 组中的 MySQL 交互,而不是使用我的本地帐户。
如果您查看正在运行的进程 ( ps -ef | grep mysql ),您应该看到 MySQL 是由根帐户 ( mysqld_safe ) 初始化的,该帐户(如您所提到的)在 mysql 帐户下运行 MySQL 守护程序 ( mysqld )。
使用相同的方法,我倾向于创建可以以 root 权限运行的脚本,这些脚本以具有较少权限的特定用户身份调用并运行 linux shell 中的另一个文件。这也使得将相同的脚本添加到根 crontab 变得更加容易。
我首先创建一个名为“mysqlbackup”的服务帐户,然后在主目录中添加一个文件.my.cnf
/------文件内容
[客户]
用户 = osbackup
密码 = 12345
------/
创建由“root”运行的管理脚本,它从 shell 执行另一个文件
创建您的“真实”脚本以作为操作系统用户“ mysqlbackup ”运行