我正在构建一组bash脚本,基本上可以在云服务器上准备apache虚拟主机、git存储库和其他东西。到目前为止,一切都很好,但是出现了一个大问题: MySQL数据库和用户创建。
当前脚本使用ssh和密钥对云服务器进行身份验证,我的团队中的每个人都可以执行命令。我希望保持这种状态,并允许他们创建新的MySQL数据库和用户,而不需要以root用户身份登录到mysql或其他任何具有高权限的用户,但我没有任何解决方案。
第一个想法是在没有密码的情况下创建一个新的mysql用户,并给予它完全的权限(就像root),但使它只能使用@'localhost'。
第二种方法是将这个MySQL控制用户的密码存储在一个文件中,并使其仅供其他脚本使用的当前ssh用户访问。然后mysql登录将使用这个存储的密码登录并创建数据库和用户。
我不知道哪种选择更好,我知道它们是危险的。我征求意见和更好的意见。
发布于 2014-05-12 07:32:55
您希望使团队使用的unix用户和mysql用户拥有尽可能少的访问权限,同时仍然允许他们做您想做的事情。这两种想法似乎都允许比必要时更多的访问权限。对于mysql团队用户来说,最好是:
~/my.cnf文件中(不再限制您的团队,但如果其他人看到脚本,就会阻止他们查看登录)。以上都是很容易做到的,也是一个很大的改进。
一个更好的想法,但更多的工作,是不允许团队用户访问创建数据库,而只是将设置站点的请求放在某个队列中,只有您控制的另一个用户脚本(它只具有所需的访问权限)将定期处理该脚本来设置站点。队列可以是一个包含每一行请求的文件,一个包含每个文件的目录,一个请求,或者一个包含每个请求记录的数据库表。这取决于你想要多少保护你的系统。
通常,您应该使用unix和mysql用户,这些用户的访问权限不如root用户。我为自己创建了一个可以工作的mysql用户,它可以创建和删除数据库,并且只执行我经常使用的操作。我只使用根用户或具有类似权限的用户,如果我需要设置另一个用户来授予它访问权限。在一个脚本中,我使用户尽可能限制,以限制损害,如果它出了问题。
https://unix.stackexchange.com/questions/128789
复制相似问题