我正在构建一组 bash 脚本,这些脚本基本上在云服务器上准备 apache 虚拟主机、git 存储库和其他内容。到目前为止一切顺利,但出现了一个大问题:MySQL数据库和用户创建。
当前的脚本使用带有密钥的 ssh 来对云服务器进行身份验证,我团队中的每个人都可以执行命令。我想保持这种方式,并以某种方式让他们创建新的 MySQL 数据库和用户,而不需要以 root 或任何其他具有高权限的用户身份登录 mysql,但我对此没有任何解决方案。
想法#1是创建一个没有密码的新mysql用户,并赋予其完全权限(如root),但使其只能使用@'localhost'
。
想法#2是将这个 MySQL 控制用户的密码存储在一个文件中,并使其仅可供其他脚本使用的当前 ssh 用户访问。然后mysql登录将使用这个存储的密码来登录并创建数据库和用户。
我不知道哪种选择更好,但我知道它们很危险。我征求意见和任何更好的想法。
答案1
您希望使您的团队使用的 unix 用户和 mysql 用户拥有尽可能少的访问权限,同时仍然允许他们执行您想要的操作。看来您的两种想法都允许比必要的更多的访问权限。对于团队 mysql 用户来说更好的是:
- 仅具有 CREATE 访问权限或仅具有他们需要的任何访问权限(将您的团队可以执行的操作限制在最低限度)。您可以使用 GRANT 语句授予 mysql 用户访问权限。
- 将用户/密码存储在
~/my.cnf
只有所有者读取权限的文件中(不再限制您的团队,但如果其他人看到脚本,则无法看到登录信息)。
以上很容易做到,而且进步很大。
更好的想法,但需要更多的工作,是不允许团队用户访问创建数据库,而只是在某个队列中发出设置站点的请求,这是另一个只有您控制的用户脚本(并且只有访问权限)需要)将定期处理以建立站点。队列可以是一个文件,每行一个请求,一个目录,每个文件一个请求,或者一个数据库表,每个记录一个请求。这取决于您想要保护系统的程度。
一般来说,您应该使用没有 root 权限的 unix 和 mysql 用户。我为自己创建了一个工作 mysql 用户,可以创建和删除数据库,并且只执行我经常使用的操作。如果我需要设置另一个用户来授予其访问权限,我只会使用 root 或具有类似权限的用户。在脚本中,我对用户进行尽可能的限制,以限制出现问题时造成的损害。