【发布时间】:2013-06-20 09:28:57
【问题描述】:
在一个应用程序上工作,管理员只会使用它来创建另一个应用程序的多个实例。
换句话说,app A 将用于在服务器上创建 app B 的克隆,并创建在子域 new_clone.domain.com 上运行该克隆应用所需的所有配置。
成功克隆了应用程序,创建了apache 配置文件,unicorn server settings 文件。设法运行 rake db:create; db:migrate 但我使用 mysql 的 root 用户执行此操作。
在克隆应用程序时,我为新克隆的应用程序生成了一个database.yml 文件,此时username 和password 设置为root,但我希望有一个不同的每个克隆应用的用户。
应用程序 A 有一个名为 Subdomain 的模型,在 subdomains_controller.rb 的 create 操作中我做了所有的事情,克隆、生成配置文件、运行 rake 任务等......还有这个 @ 987654335@ 操作我需要创建一个具有特定数据库权限的新 Mysql 用户。
到目前为止我所做的尝试,不能说我做了很多,我尝试在控制器创建操作中运行 mysql 命令:
def create
if @subdomain.save
....
system "mysql -u root -p root; create database new_database;..."
....
else
....
end
end
但这会使我的创建操作暂停,直到我输入密码,即使我能找到一种方法来解决它,我也不确定其余的 mysql 命令是否可以工作。可能有一种更好的方法可以在不进入 mysql 控制台的情况下使用一个命令行添加 Mysql 用户。
谢谢。
【问题讨论】:
-
您的用户是否拥有创建数据库或用户所需的权限?
-
好吧,我的 root 用户是的,但这就是想法 - 当创建一个新用户时,它应该拥有创建数据库的权限,并且只拥有该数据库的所有权限。
-
因为
-p和root之间有空格,该命令要求您提供root 密码,请查看mysql手册页。 -
不要认为从 ruby 脚本中与 mysql 用户一起玩是个好主意,这可能是未来的重大安全威胁。
-
@toro2k 谢谢,这确实是问题的一部分。
标签: mysql ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.2