首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在以服务的形式运行时,如何安全地允许访问mysql服务器

问在以服务的形式运行时,如何安全地允许访问mysql服务器
EN

Database Administration用户
提问于 2018-11-22 11:58:26
回答 1查看 346关注 0票数 2

我知道如何将pt-kill作为systemd服务运行:

代码语言:javascript
复制
[Unit]
Description = pt-kill myUser
After=syslog.target mysql.service
Requires=mysql.service
[Service]
Type = simple
PIDFile = /var/run/ptkill.pid
ExecStart = /usr/bin/pt-kill -uxxx -pxxx --daemonize --pid=/var/run/ptkill.pid --log=/var/log/ptkill.log --match-user myUser --match-state "Sending data" --busy-time 640 --kill-query --print
Restart=on-abort
[Install]
WantedBy=multi-user.target

但是,通过这种方式,另一个系统用户可以通过ps -e -o pid,unit,cmd查看mysql根密码:

代码语言:javascript
复制
7786 ptkill.service perl /usr/bin/pt-kill -uxxx -pxxx --daemonize --pid=/var/run/ptkill.pid --log=/var/log

我尝试将User=root添加到[Service]-section中,因为根用户保护配置了对mysql的无密码访问的/root/.my.cnf。遗憾的是,这不起作用(我没有权限访问mysql而不指定用户.启动ptkill.service时,我认为在启动ptkill.service时不会加载受保护的ptkill.service)。我还尝试添加参数"-umyUser -pcat /path/to/my/password“,这也不起作用。

如何安全地运行pt-kill作为系统服务pt-kill,以及如何安全地让它访问mysql服务器?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2018-11-22 16:02:25

我希望你不是我的同事:-)他几周前必须设置一个与你的配置非常相似的配置--你可以检查我们的包,如果这对你有帮助的话:源deb,化蛹。

我告诉他使用使用 基于套接字的认证,这是我们对非人工帐户使用的方法,它只需要本地权限 (icinga,prometheus)。您只需要启用插件,并告诉帐户的名称与帐户相同的服务将运行作为使用它,所以不需要密码。因为没有密码,所以不能被窃取,所以主机的妥协不会升级到更糟的问题。也更少的私事要处理。除非存在MySQL错误,否则帐户与操作系统帐户一样安全。您必须为MySQL (auth_socket将防止基于密码的身份验证并将其锁定到本地主机)和OS (具有锁定登录的系统用户)创建一个非根帐户,否则它将失败。

如果由于某些原因不能使用上述方法,则仍然可以使用基于密码的身份验证,但可以将其设置在自己的配置文件上,仅由启动服务的用户(非root用户)读取。

重点始终是向服务提供尽可能少的权限。根的使用不仅给出了最大的数量,还重叠了一些操作系统(日志记录、限制等)。而且mysql (max_connections)是您不想要的,即使它实际上有很多权限来杀死其他进程。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/223200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档