mysql - 有没有办法在表没有更新权限的情况下使用 rails 迁移创建 MySQL 表?

标签 mysql ruby-on-rails ruby migration

我想创建一个只读表,我认为 MYSQL 权限是最好的方法。

这可以通过迁移实现吗?

最佳答案

生成迁移文件如下,

rails g migration add_permissions_to_table_name    
invoke  active_record
      create    db/migrate/20120620191050_add_permissions_to_table_name.rb

编辑文件如下,

think@thinkComputer:~/Agile/ajax1$ vi db/migrate20120620191050_add_permissions_to_table_name.rb

class AddPermissionsToTableName < ActiveRecord::Migration
  def up

    execute "GRANT SELECT ON database1.table_name TO 'someuser'@'somehost'"

  end

  def down

    execute "REVOKE SELECT ON database1.table_name TO 'someuser'@'somehost'"

  end

end

运行rake任务如下,

$ rake db:migrate

以后如果你想撤销那个权限,那么做,

$ rake db:migrate:down VERSION=20120620191050

您可能希望成为对“database1.table_name”具有授予权限的 mysql 用户,否则您将收到以下错误,

mysql> GRANT SELECT ON database1.table_name TO 'someuser'@'somehost';
ERROR 1142 (42000): GRANT command denied to user 'current_mysql_user'@'localhost' for table 'table_name'

关于mysql用户和数据库的详细信息位于“config/database.yml”

如果这有效,请告诉我!

关于mysql - 有没有办法在表没有更新权限的情况下使用 rails 迁移创建 MySQL 表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11126277/

相关文章:

MySQL 将行转为动态数量的列

mysql - 主键在 MySQL 中没有默认值

ruby-on-rails - 嵌套参数,具有一对一的多态性

sql - Ruby on Rails 迁移中的 unsigned int 字段?

ruby - 为什么不调用模块初始化方法?

php - 查询返回日期 (YYYY-MM-DD) 并希望显示为 10 月 15 日星期五

mysql - 根据where子句连接2个表并提取一列

ruby-on-rails - 尝试使用操作电缆广播网络通知时出错

ruby - 我如何将 ruby​​ 应用程序部署到网站?

ruby-on-rails - 在 API 中设计 RegistrationsController 创建操作