Skip to content

Latest commit

 

History

History
79 lines (63 loc) · 1.61 KB

README.md

File metadata and controls

79 lines (63 loc) · 1.61 KB

simple mysql grant management inspired by this chef recipe

Installation

It's still being developed so it's not on rubygems right now. Add this to your Gemfile:

gem 'mysql_users', git: 'https://github.com/margueritepd/ruby_mysql_users.git'

Usage

The user object takes a database client as part of its constructor. You can use the mysql2 database client, or you can write your own - as long as it responds to query and escape, you're good.

If using the mysql2 client, you should probably make sure you close the connection when you're done manipulating the user object.

In the constructor, you want to also pass the user's username and hosts from which it can log into.

You can optionally pass a password.

eg:

require 'mysql_users'
require 'mysql2'

begin
  db = Mysql2::Client.new(
    host: "localhost",
    username: "root",
  )

  ['%', 'localhost'].each do |host|
    user = MysqlUsers::User.new(
      db,
      {
        username: 'marguerite',
        host: host,
        password: 'foo',
      }
    )
    user.create  # won't complain if user exists already
    user.grant({
      grants: ['ALL PRIVILEGES'],
      database: 'web',
      table: 'auth',
    })
    user.revoke({
      grants: ['SELECT'],
      database: 'web',
      table: 'auth',
    })
    user.drop  # won't complain if user doesn't exist
  end
rescue => e
  puts e
  raise e
ensure
  db.close unless db.nil?
end

Testing

bundle exec rake

Creating a new package

bundle exec rake build
# new gem is in pkg/