add the mysql munin graphs:
 . mysql_connections
 . mysql_qcache
 . mysql_qcache_mem
 . mysql_size_all
fix incorrect munin graph names
move the mysql::server::munin::base class to its own file
fix munin script path
fix script_path_in parameter
fixed stray semicolon
fully qualify the path to mysqladmin, without it, you will get this error:

Parameter unless failed: 'mysqladmin -uroot status > /dev/null' is both unqualifed and specified no search path at /etc/puppet/modules/mysql/manifests/server/base.pp:62

unless you have set globally:

Exec { path => "/usr/bin:/usr/sbin/:/bin:/sbin:/usr/local/bin:/usr/local/sbin" }
add mysql munin graphs and adjust the file distribution to match the right location of where they are
add mysql::client::perl, same as mysql::client::ruby
Avoid root password leak to process list

The current procedure of setting the root MySQL password leaks the root
password by giving it to the setmysqlpass.sh script on the command line.
This means that during the couple of seconds that the script is
executing, the password is visible in the process list!

Since we're already writing the password in the /root/.my.cnf file, make
the setmysqlpass.sh script parse this file to retrieve the password
instead of receiving it from a command line argument.

Also, in some shells the 'echo' command might appear in the process
list. Use a heredoc notation to create the output without using a
command.

Signed-off-by: Gabriel Filion <lelutin@gmail.com>
add table and column privilege management to mysql_grant
Revert "add table and column privilege management to mysql_grant"

This reverts commit 74bf6b84e413b3cc1cce83c334341c1fe58b3b1c. It was
accidentally pushed to shared_mysql before it was ready
Merge remote-tracking branch 'riseup/master'
add table grant privilege handling to mysql_grant
add column grant to mysql_grant
table privileges don't have the name with _privs on the end, also the actually available privileges are less than was originally thought, so I trimmed those down
changed the matches regexp to be not greedy so other things like tables and columns can be matched
change the type name and the table_name to be less confusing
table privileges need to be handled with GRANT/REVOKE statements instead of inserts of Y/N values into the table.

To handle this, this comment removes the create_row for table_privs, it also selects the actual value of the Table_priv so its value can be used instead of the method that is used for Y/N value settings
Instead of doing an update table_priv, we need to do GRANT/REVOKE statements

When we are working with tables_priv we need to first get a downcased array of the currently set privileges, and a downcased array of the desired permissions.

Then we make a list of the permissions to revoke by subtracting the requested permissions from the currently set ones.

If the list of permissions to revoke is not empty, then we issue a REVOKE.

Then we make a list of the permissions to add by subtracting the requested permissions from the current set (no need to add select again if it is already there).

Then if the set of permissions to add is not empty, then we actually execute the statement.