我有一个Ruby on Rails项目,我想让用户执行SQL SELECT查询。
为了安全起见,我有两个mysql数据库。其中一个是我的主数据库,包含用户信息等。第二个数据库用于保存"测试"表,用户应该能够从使用我授予"SELECT"权限的特定数据库用户中选择内容。
基本上,我希望我的用户提交一个查询,然后我想更改到我的测试数据库,运行该查询,返回结果,然后返回到我的旧数据库。
的形式
mysql: &mysql
adapter: mysql
database: sql_detective
user: root
password: root
timeout: 5000
mysql_tests: &mysql_tests
adapter: mysql
database: sql_detective_tests
user: user
password: user
timeout: 5000
test:
<<: *mysql_tests
development:
<<: *mysql
Funcionario.rb
class Funcionario < ActiveRecord::Base
establish_connection :test
end
stages_controller.rb
@query = Funcionario.find_by_sql(params[:query])
当我尝试执行查询时,我得到这个错误:
Mysql::Error in StagesController#sql_query
Access denied for user 'root'@'localhost' (using password: YES)
已解决。
修复
的形式
把user改成username就可以了
一样……前
development:
adapter: mysql
database: sql_detective
user: root
password: root
timeout: 5000
后development:
adapter: mysql
database: sql_detective
username: root
password: root
timeout: 5000