我有一个Ruby on Rails项目,我想让用户执行SQL SELECT查询。
出于安全考虑,我有两个mysql数据库。其中一个是我的主数据库,包含用户信息等。 第二个数据库用于保存“测试”表,用户应该能够使用我授予“select”权限的特定数据库用户来选择内容。
基本上,我希望我的用户提交查询,然后我想更改为我的测试数据库,运行该查询,返回结果,然后返回到我的旧数据库。
的database.yml
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)
答案 0 :(得分:2)
解决。
<强>修正强>
的database.yml
将用户更改为用户名已修复此问题。
像这样...
<强>前强>
development:
adapter: mysql
database: sql_detective
user: root
password: root
timeout: 5000
<强>后强>
development:
adapter: mysql
database: sql_detective
username: root
password: root
timeout: 5000