Adoptable Cookbooks List

Looking for a cookbook to adopt? You can now see a list of cookbooks available for adoption!
List of Adoptable Cookbooks

Supermarket Belongs to the Community

Supermarket belongs to the community. While Chef has the responsibility to keep it running and be stewards of its functionality, what it does and how it works is driven by the community. The chef/supermarket repository will continue to be where development of the Supermarket application takes place. Come be part of shaping the direction of Supermarket by opening issues and pull requests or by joining us on the Chef Mailing List.

Select Badges

Select Supported Platforms

Select Status


mysql (182) Versions 6.1.1

Provides mysql_service, mysql_config, and mysql_client resources

cookbook 'mysql', '= 6.1.1', :supermarket
cookbook 'mysql', '= 6.1.1'
knife supermarket install mysql
knife supermarket download mysql
Quality 0%

MySQL Cookbook

Join the chat at

The Mysql Cookbook is a library cookbook that provides resource primitives
(LWRPs) for use in recipes. It is designed to be a reference example for
creating highly reusable cross-platform cookbooks.


This cookbook is concerned with the "MySQL Community Server",
particularly those shipped with F/OSS Unix and Linux distributions. It
does not address forks or value-added repackaged MySQL distributions
like Drizzle, MariaDB, or Percona.


  • Chef 11 or higher
  • Ruby 1.9 or higher (preferably from the Chef full-stack installer)
  • Network accessible package repositories
  • 'recipe[selinux::disabled]' on RHEL platforms

Platform Support

The following platforms have been tested with Test Kitchen:

|                | 5.0 | 5.1 | 5.5 | 5.6 | 5.7 |
| debian-7       |     |     | X   |     |     |
| ubuntu-10.04   |     | X   |     |     |     |
| ubuntu-12.04   |     |     | X   |     |     |
| ubuntu-14.04   |     |     | X   | X   |     |
| ubuntu-15.04   |     |     |     | X   |     |
| centos-5       |   X | X   | X   | X   | X   |
| centos-6       |     | X   | X   | X   | X   |
| centos-7       |     |     | X   | X   | X   |
| amazon         |     |     | X   | X   | X   |
| fedora-20      |     |     | X   | X   | X   |
| suse-11.3      |     |     | X   |     |     |
| omnios-151006  |     |     | X   | X   |     |
| smartos-14.3.0 |     |     | X   | X   |     |

Cookbook Dependencies

  • yum-mysql-community
  • smf


Place a dependency on the mysql cookbook in your cookbook's metadata.rb
depends 'mysql', '~> 6.0'

Then, in a recipe:

mysql_service 'foo' do
  port '3306'
  version '5.5'
  initial_root_password 'change me'
  action [:create, :start]

The service name on the OS is mysql-foo. You can manually start and
stop it with service mysql-foo start and service mysql-foo stop.

The configuration file is at /etc/mysql-foo/my.cnf. It contains the
minimum options to get the service running. It looks like this.

# Chef generated my.cnf for instance mysql-foo

default-character-set          = utf8
port                           = 3306
socket                         = /var/run/mysql-foo/mysqld.sock

default-character-set          = utf8

user                           = mysql
pid-file                       = /var/run/mysql-foo/
socket                         = /var/run/mysql-foo/mysqld.sock
port                           = 3306
datadir                        = /var/lib/mysql-foo
tmpdir                         = /tmp
log-error                      = /var/log/mysql-foo/error.log
!includedir /etc/mysql-foo/conf.d

socket                         = /var/run/mysql-foo/mysqld.sock

You can put extra configuration into the conf.d directory by using the
mysql_config resource, like this:

mysql_service 'foo' do
  port '3306'
  version '5.5'
  initial_root_password 'change me'
  action [:create, :start]

mysql_config 'foo' do
  source 'my_extra_settings.erb'
  notifies :restart, 'mysql_service[foo]'
  action :create

You are responsible for providing my_extra_settings.erb in your own
cookbook's templates folder.

Connecting with the mysql CLI command

Logging into the machine and typing mysql with no extra arguments
will fail. You need to explicitly connect over the socket with mysql
-S /var/run/mysql-foo/mysqld.sock
, or over the network with mysql -h

Upgrading from older version of the mysql cookbook

  • It is strongly recommended that you rebuild the machine from
    scratch. This is easy if you have your data_dir on a dedicated
    mount point. If you must upgrade in-place, follow the instructions

  • The 6.x series supports multiple service instances on a single
    machine. It dynamically names the support directories and service
    names. /etc/mysql becomes /etc/mysql-instance_name. Other support
    directories in /var /run etc work the same way. Make sure to
    specify the data_dir property on the mysql_service resource to
    point to the old /var/lib/mysql directory.

Resources Overview


The mysql_service resource manages the basic plumbing needed to get a
MySQL server instance running with minimal configuration.

The :create action handles package installation, support
directories, socket files, and other operating system level concerns.
The internal configuration file contains just enough to get the
service up and running, then loads extra configuration from a conf.d
directory. Further configurations are managed with the mysql_config resource.

  • If the data_dir is empty, a database will be initialized, and a root user will be set up with initial_root_password. If this directory already contains database files, no action will be taken.

The :start action starts the service on the machine using the
appropriate provider for the platform. The :start action should be
omitted when used in recipes designed to build containers.


mysql_service 'default' do
  version '5.7'
  bind_address ''
  port '3306'  
  data_dir '/data'
  initial_root_password 'Ch4ng3me'
  action [:create, :start]

Please note that when using notifies or subscribes, the resource
to reference is mysql_service[name], not service[mysql].


  • charset - specifies the default character set. Defaults to utf8.

  • data_dir - determines where the actual data files are kept
    on the machine. This is useful when mounting external storage. When
    omitted, it will default to the platform's native location.

  • error_log - Tunable location of the error_log

  • initial_root_password - allows the user to specify the initial
    root password for mysql when initializing new databases.
    This can be set explicitly in a recipe, driven from a node
    attribute, or from data_bags. When omitted, it defaults to
    ilikerandompasswords. Please be sure to change it.

  • instance - A string to identify the MySQL service. By convention,
    to allow for multiple instances of the mysql_service, directories
    and files on disk are named mysql-<instance_name>. Defaults to the
    resource name.

  • package_action - Defaults to :install.

  • package_name - Defaults to a value looked up in an internal map.

  • package_version - Specific version of the package to install,
    passed onto the underlying package manager. Defaults to nil.

  • bind_address - determines the listen IP address for the mysqld service. When
    omitted, it will be determined by MySQL. If the address is "regular" IPv4/IPv6
    address (e.g or ::1), the server accepts TCP/IP connections only for
    that particular address. If the address is "" (IPv4) or "::" (IPv6), the
    server accepts TCP/IP connections on all IPv4 or IPv6 interfaces.

  • mysqld_options - A key value hash of options to be rendered into
    the main my.cnf. WARNING - It is highly recommended that you use the
    mysql_config resource instead of sending extra config into a
    mysql_service resource. This will allow you to set up
    notifications and subscriptions between the service and its
    configuration. That being said, this can be useful for adding extra
    options needed for database initialization at first run.

  • port - determines the listen port for the mysqld service. When
    omitted, it will default to '3306'.

  • run_group - The name of the system group the mysql_service
    should run as. Defaults to 'mysql'.

  • run_user - The name of the system user the mysql_service should
    run as. Defaults to 'mysql'.

  • pid_file - Tunable location of the pid file.

  • socket - determines where to write the socket file for the
    mysql_service instance. Useful when configuring clients on the
    same machine to talk over socket and skip the networking stack.
    Defaults to a calculated value based on platform and instance name.

  • tmp_dir - Tunable location of the tmp_dir

  • version - allows the user to select from the versions available
    for the platform, where applicable. When omitted, it will install
    the default MySQL version for the target platform. Available version
    numbers are 5.0, 5.1, 5.5, 5.6, and 5.7, depending on platform.


  • :create - Configures everything but the underlying operating system service.
  • :delete - Removes everything but the package and data_dir.
  • :start - Starts the underlying operating system service
  • :stop- Stops the underlying operating system service
  • :restart - Restarts the underlying operating system service
  • :reload - Reloads the underlying operating system service


Chef selects the appropriate provider based on platform and version,
but you can specify one if your platform support it.

mysql_service[instance-1] do
  port '1234'
  data_dir '/mnt/lottadisk'
  provider Chef::Provider::MysqlServiceSysvinit
  action [:create, :start]
  • Chef::Provider::MysqlServiceBase - Configures everything needed t run
    a MySQL service except the platform service facility. This provider
    should never be used directly. The :start, :stop, :restart, and
    :reload actions are stubs meant to be overridden by the providers

  • Chef::Provider::MysqlServiceSmf - Starts a mysql_service using
    the Service Management Facility, used by Solaris and IllumOS. Manages
    the FMRI and method script.

  • Chef::Provider::MysqlServiceSystemd - Starts a mysql_service
    using SystemD. Manages the unit file and activation state

  • Chef::Provider::MysqlServiceSysvinit - Starts a mysql_service
    using SysVinit. Manages the init script and status.

  • Chef::Provider::MysqlServiceUpstart - Starts a mysql_service
    using Upstart. Manages job definitions and status.


The mysql_config resource is a wrapper around the core Chef
template resource. Instead of a path parameter, it uses the
instance parameter to calculate the path on the filesystem where
file is rendered.


mysql_config[default] do
  source 'site.cnf.erb'
  action :create


  • config_name - The base name of the configuration file to be
    rendered into the conf.d directory on disk. Defaults to the resource

  • cookbook - The name of the cookbook to look for the template
    source. Defaults to nil

  • group - System group for file ownership. Defaults to 'mysql'.

  • instance - Name of the mysql_service instance the config is
    meant for. Defaults to 'default'.

  • owner - System user for file ownership. Defaults to 'mysql'.

  • source - Template in cookbook to be rendered.

  • variables - Variables to be passed to the underlying template

  • version - Version of the mysql_service instance the config is
    meant for. Used to calculate path. Only necessary when using
    packages with unique configuration paths, such as RHEL Software
    Collections or OmniOS. Defaults to 'nil'


  • :create - Renders the template to disk at a path calculated using
    the instance parameter.

  • :delete - Deletes the file from the conf.d directory calculated
    using the instance parameter.

More Examples

mysql_service 'instance-1' do
  action [:create, :start]

mysql_service 'instance-2' do
  action [:create, :start]

mysql_config 'logging' do
  instance 'instance-1'
  source 'logging.cnf.erb'
  action :create
  notifies :restart, 'mysql_service[instance-1]'

mysql_config 'security settings for instance-2' do
  config_name 'security'
  instance 'instance-2'
  source 'security_stuff.cnf.erb'
  variables(:foo => 'bar')
  action :create
  notifies :restart, 'mysql_service[instance-2]'


The mysql_client resource manages the MySQL client binaries and
development libraries.

It is an example of a "singleton" resource. Declaring two
mysql_client resources on a machine usually won't yield two separate
copies of the client binaries, except for platforms that support
multiple versions (RHEL SCL, OmniOS).


mysql_client 'default' do
  action :create


  • package_name - An array of packages to be installed. Defaults to a
    value looked up in an internal map.

  • package_version - Specific versions of the package to install,
    passed onto the underlying package manager. Defaults to nil.

  • version - Major MySQL version number of client packages. Only
    valid on for platforms that support multiple versions, such as RHEL
    via Software Collections and OmniOS.


  • :create - Installs the client software
  • :delete - Removes the client software

Advanced Usage Examples

There are a number of configuration scenarios supported by the use of
resource primitives in recipes. For example, you might want to run
multiple MySQL services, as different users, and mount block devices
that contain pre-existing databases.

Multiple Instances as Different Users

# instance-1
user 'alice' do
  action :create

directory '/mnt/data/mysql/instance-1' do
  owner 'alice'
  action :create

mount '/mnt/data/mysql/instance-1' do
  device '/dev/sdb1'
  fstype 'ext4'
  action [:mount, :enable]

mysql_service 'instance-1' do
  port '3307'
  run_user 'alice'
  data_dir '/mnt/data/mysql/instance-1'
  action [:create, :start]

mysql_config 'site config for instance-1' do
  instance 'instance-1'
  source 'instance-1.cnf.erb'
  notifies :restart, 'mysql_service[instance-1]'

# instance-2
user 'bob' do
  action :create

directory '/mnt/data/mysql/instance-2' do
  owner 'bob'
  action :create

mount '/mnt/data/mysql/instance-2' do
  device '/dev/sdc1'
  fstype 'ext3'
  action [:mount, :enable]

mysql_service 'instance-2' do
  port '3308'
  run_user 'bob'
  data_dir '/mnt/data/mysql/instance-2'
  action [:create, :start]

mysql_config 'site config for instance-2' do
  instance 'instance-2'
  source 'instance-2.cnf.erb'
  notifies :restart, 'mysql_service[instance-2]'

Replication Testing

Use multiple mysql_service instances to test a replication setup.
This particular example serves as a smoke test in Test Kitchen because
it exercises different resources and requires service restarts.

Frequently Asked Questions

How do I run this behind my firewall?

On Linux, the mysql_service resource uses the platform's underlying
package manager to install software. For this to work behind
firewalls, you'll need to either:

  • Configure the system yum/apt utilities to use a proxy server that can reach the Internet
  • Host a package repository on a network that the machine can talk to

On the RHEL platform_family, applying the yum::default recipe will
allow you to drive the yum_globalconfig resource with attributes to
change the global yum proxy settings.

If hosting repository mirrors, applying one of the following recipes
and adjust the settings with node attributes.

The mysql command line doesn't work

If you log into the machine and type mysql, you may see an error
like this one:

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

This is because MySQL is hardcoded to read the defined default my.cnf
file, typically at /etc/my.cnf, and this LWRP deletes it to prevent
overlap among multiple MySQL configurations.

To connect to the socket from the command line, check the socket in the relevant my.cnf file and use something like this:

mysql -S /var/run/mysql-foo/mysqld.sock -Pwhatever

Or to connect over the network, use something like this:
connect over the network..

mysql -h -Pwhatever

These network or socket ssettings can also be put in you
$HOME/.my.cnf, if preferred.

What about MariaDB, Percona, Drizzle, WebScaleSQL, etc.

MySQL forks are purposefully out of scope for this cookbook. This is
mostly to reduce the testing matrix to a manageable size. Cookbooks
for these technologies can easily be created by copying and adapting
this cookbook. However, there will be differences.

Package repository locations, package version names, software major
version numbers, supported platform matrices, and the availability of
software such as XtraDB and Galera are the main reasons that creating
multiple cookbooks to make sense.


Hacking / Testing / TODO

Please refer to the

License & Authors

Copyright:: 2009-2014 Chef Software, Inc

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
See the License for the specific language governing permissions and
limitations under the License.

Dependent cookbooks

yum-mysql-community >= 0.0.0
smf >= 0.0.0

Contingent cookbooks

aegir Applicable Versions
aegir2 Applicable Versions
aegir3 Applicable Versions
agilefant Applicable Versions
alfresco Applicable Versions
alfresco-db Applicable Versions
automysqlbackup Applicable Versions
bacula Applicable Versions
bacula-backup Applicable Versions
bamboo Applicable Versions
boilerplate Applicable Versions
boxbilling Applicable Versions
bricks Applicable Versions
cacti Applicable Versions
cakephp Applicable Versions
cg_mysql Applicable Versions
chef_jira Applicable Versions
cloudstack Applicable Versions
cloudstack_wrapper Applicable Versions
config-driven-helper Applicable Versions
configure_and_deploy_ssc Applicable Versions
confluence Applicable Versions
coopr Applicable Versions
crowd Applicable Versions
cyclesafe_chef Applicable Versions
database Applicable Versions
database_restore Applicable Versions
databox Applicable Versions
druid-example Applicable Versions
drupal Applicable Versions
drupal-cookbook Applicable Versions
drupalbaseplus Applicable Versions
dvwa Applicable Versions
elefant Applicable Versions
eulipion-cleanspeak Applicable Versions
fanfare Applicable Versions
ff_sync Applicable Versions
flyway Applicable Versions
fog Applicable Versions
foreman Applicable Versions
frog Applicable Versions
frontaccounting Applicable Versions
gallery Applicable Versions
gerrit Applicable Versions
gitlab Applicable Versions
gitlab-server Applicable Versions
gitlabhq Applicable Versions
gitorious Applicable Versions
gotcms Applicable Versions
guardian Applicable Versions
hollandbackup Applicable Versions
huginn Applicable Versions
iptables_web Applicable Versions
ish Applicable Versions
ish_mediawiki Applicable Versions
jahia Applicable Versions
jira Applicable Versions
laravel Applicable Versions
lxmpbox Applicable Versions
madhucookbook Applicable Versions
magento Applicable Versions
mattermost Applicable Versions
mediawiki Applicable Versions
mineos Applicable Versions
mroonga Applicable Versions
mw_mysql Applicable Versions
myface Applicable Versions
mysql-chef_gem Applicable Versions
mysql-hardening Applicable Versions
mysql-multi Applicable Versions
mysql-replication Applicable Versions
mysql-test-schema Applicable Versions
mysql2_chef_gem Applicable Versions
mysql_charset Applicable Versions
mysql_chef_gem Applicable Versions
mysql_logrotate Applicable Versions
mysql_role Applicable Versions
mysql_tuning Applicable Versions
mythtv Applicable Versions
myusa Applicable Versions
nodestack Applicable Versions
ohmage Applicable Versions
open-build-service Applicable Versions
opencart Applicable Versions
openstack-common Applicable Versions
openstack-mistral Applicable Versions
openstack-ops-database Applicable Versions
opsview Applicable Versions
orchestrator Applicable Versions
owncloud Applicable Versions
pagekit Applicable Versions
pdns Applicable Versions
petals Applicable Versions
phabricator Applicable Versions
php Applicable Versions
phpbb Applicable Versions
phpstack Applicable Versions
pinba Applicable Versions
piwik Applicable Versions
postfixadmin Applicable Versions
prestashop Applicable Versions
pvpgn Applicable Versions
pythonstack Applicable Versions
q2a Applicable Versions
rackmonkey Applicable Versions
radiant Applicable Versions
redmine Applicable Versions
redmine2 Applicable Versions
roundcube Applicable Versions
ruby-env-cookbook Applicable Versions
rubycas Applicable Versions
seafile Applicable Versions
shaybtest Applicable Versions
singularity Applicable Versions
sphinx Applicable Versions
spree Applicable Versions
sptoolkit Applicable Versions
stack_commons Applicable Versions
stackstorm Applicable Versions
stash Applicable Versions
sugar_crm Applicable Versions
sugarcrm Applicable Versions
sugarcrm-ce Applicable Versions
sugarcrm_ce Applicable Versions
symfony Applicable Versions
tango Applicable Versions
teampass Applicable Versions
testswarm Applicable Versions
tungsten Applicable Versions
vicnum Applicable Versions
wordpress Applicable Versions
wordpress-windows Applicable Versions
zabbix Applicable Versions
zabbix2 Applicable Versions
zabbix_lwrp Applicable Versions
zarafa Applicable Versions
zenoss Applicable Versions
zf2 Applicable Versions

mysql Cookbook CHANGELOG

v6.1.1 (2015-09-24)

  • Completing ChefSpec matchers

v6.1.0 (2015-07-17)

  • Adding tunables for tmp_dir, error_log, and pid_file
  • Adding mysqld_options hash interface for main my.cnf template

v6.0.31 (2015-07-13)

  • Reverting create_stop_system_service checks

v6.0.30 (2015-07-13)

  • Ubuntu 15.04 support
  • Check for scripts and unit files during create_stop_system_service

v6.0.29 (2015-07-12)

  • Patch to allow blank root password
  • Adding package information for Suse 12.0

v6.0.28 (2015-07-10)

  • Fixes for 12.4.x

v6.0.27 (2015-07-09)

  • Allowing integer value for port number

v6.0.26 (2015-07-07)

  • Reverting breaking changes introduced in 6.0.25

v6.0.25 (2015-07-06)

  • Fixes for 12.4.1

v6.0.24 (2015-06-27)

  • #341 - Changing default GRANT for root from '%' to 'localhost' and ''

v6.0.23 (2015-06-21)

  • #354 Better handling of long MySQL startup times

v6.0.22 (2015-05-07)

  • Debian 8 (Jessie) support

v6.0.21 (2015-04-08)

  • Fix to Upstart prestart script when using custom socket
  • Adding --explicit_defaults_for_timestamp mysql_install_db_cmd for 5.6 and above

v6.0.20 (2015-03-27)

  • #318 - Fixing Upstart pre-start script to handle custom socket paths

v6.0.19 (2015-03-25)

  • Adding support for Amazon Linux 2015.03

v6.0.18 (2015-03-24)

  • Adding support for 5.6 and 5.7 packages from dotdeb repos on Debian 7

v6.0.17 (2015-03-13)

  • Updated for MySQL 5.7.6.
  • Handing removal of mysql_install_db and mysqld_safe

v6.0.16 (2015-03-10)

  • Moved --defaults-file as first option to mysql_install_db_script

v6.0.15 (2015-02-26)

  • Updating docker detection fix to pass specs

v6.0.14 (2015-02-26)

  • Fixed debian system service :disable action. Now survives reboot
  • Fixing centos-7 instance :enable action. Now survives
  • Not applying Apparmor policy if running in a Docker container

v6.0.13 (2015-02-15)

  • Adding support for special characters in initial_root_password
  • Fixing failure status bug in sysvinit script

v6.0.12 (2015-02-30)

  • No changes. Released a 6.0.11 that was identical to 6.0.10. Git before coffee.

v6.0.11 (2015-02-30)

  • Adding support for configurable socket files

v6.0.10 (2015-01-19)

  • Fix #282 - Fixing up data_dir template variable

v6.0.9 (2015-01-19)

  • Fix #282 - undefined method `parsed_data_dir' bug

v6.0.8 (2015-01-19)

  • Refactoring helper methods out of resource classes

v6.0.7 (2015-01-14)

  • Fixing timing issue with Upstart provider :restart and :reload actions where service returns before being available

v6.0.6 (2014-12-26)

  • Fixing subtle bug where MysqlCookbook::Helper methods were polluting Chef::Resource

v6.0.5 (2014-12-25)

  • Using 'include_recipe' instead of 'recipe_eval' in LWRP
  • Fixing type checking on package_name attribute in mysql_client resource.

v6.0.4 (2014-12-21)

  • Suggest available versions if current is not available for current platform.

v6.0.3 (2014-12-17)

  • Adding bind_address parameter to mysql_service resource

v6.0.2 (2014-12-17)

  • Fixing sysvinit provider to survive reboots

v6.0.1 (2014-12-16)

  • Fixing Upstart template to survive reboots

v6.0.0 (2014-12-15)

  • Major version update
  • Cookbook now provides LWRPs instead of recipes
  • Platform providers re-factored into init system providers
  • Separated :create and :start actions for use in recipes that build containers
  • mysql_service now supports multiple instances on the same machine
  • mysql_service no longer attempts to manage user records
  • Removal of debian-sys-maint
  • Unified Sysvinit script that works on all platforms
  • mysql_config resource introduced
  • mysql_client fixed up
  • Refactored acceptance tests
  • Temporarily dropped FreeBSD support

v5.6.1 (2014-10-29)

  • Use Gem::Version instead of Chef::Version

v5.6.0 (2014-10-29)

  • Changing default charset to utf8
  • Quoting passwords in debian.cnf.erb
  • Amazon 2014.09 support
  • Ubuntu 14.10 support
  • Only hide passwords from STDOUT via "sensitive true" in chef-client higher than 11.14
  • Updating test harness

v5.5.4 (2014-10-07)

  • Adding sensitive flag to execute resources to protect passwords from logs

v5.5.3 (2014-09-24)

  • Reverting back to Upstart on Ubuntu 14.04

v5.5.2 (2014-09-8)

  • Reverting commit that broke Debian pass_string

v5.5.1 (2014-09-2)

  • Switching Ubuntu service provider to use SysVinit instead of Upstart

v5.5.0 (2014-08-27)

  • Adding package version and action parameters to mysql_service resource
  • Fixing Debian pass_string

v5.4.4 (2014-08-27)

  • Changing module namespace to MysqlCookbook

v5.4.3 (2014-08-25)

  • More refactoring. Moving helper function bits into resource parsed_parameters

v5.4.2 (2014-08-25)

  • Moving provider local variables into definitions for RHEL provider

v5.4.1 (2014-08-25)

  • Refactoring resources into the LWRP style with parsed parameters
  • Moving provider local variables into definitions

v5.4.0 (2014-08-25)

  • #212 - support for centos-7 (mysql55 and mysql56)
  • Adding (untested) Debian-6 support
  • Adding Suse support to metadata.rb
  • Adding ability to change MySQL root password
  • Added libmysqlclient-devel package to SuSE client provider
  • Appeasing AppArmor
  • Reducing duplication in client provider

v5.3.6 (2014-06-18)

  • Fixing pid path location. Updating tests to include real RHEL

v5.3.4 (2014-06-16)

  • Fixing specs for Amazon Linux server package names

v5.3.2 (2014-06-16)

  • Fixing Amazon Linux support

v5.3.0 (2014-06-11)

  • #189 - Fix server_repl_password description
  • #191 - Adding support for server55 and server56 on el-6
  • #193 - Fix syntax in mysql_service example
  • #199 - Adding Suse support

v5.2.12 (2014-05-19)

PR #192 - recipes/server.rb should honor parameter node['mysql']['version']

v5.2.10 (2014-05-15)

  • COOK-4394 - restore freebsd support

v5.2.8 (2014-05-15)

  • [COOK-4653] - Missing mySQL 5.6 support for Ubuntu 14.04

v5.2.6 (2014-05-07)

  • [COOK-4625] - Fix password resource parameter consumption on Debian and Ubuntu
  • Fix up typos and version numbers in
  • Fix up specs from COOK-4613 changes

v5.2.4 (2014-05-02)

  • [COOK-4613] - Fix permissions on mysql data_dir to allow global access to mysql.sock

v5.2.2 (2014-04-24)

  • [COOK-4564] - Using positive tests for datadir move

v5.2.0 (2014-04-22)

  • [COOK-4551] - power grants.sql from resource parameters

v5.1.12 (2014-04-21)

  • [COOK-4554] - Support for Debian Sid

v5.1.10 (2014-04-21)

  • [COOK-4565] Support for Ubuntu 14.04
  • [COOK-4565] Adding Specs and TK platform
  • Removing non-LTS 13.10 specs and TK platform

v5.1.8 (2014-04-12)

Adding Ubuntu 13.04 to Platforminfo

v5.1.6 (2014-04-11)

  • [COOK-4548] - Add template[/etc/mysql/debian.cnf] to Ubuntu provider

v5.1.4 (2014-04-11)

  • [COOK-4547] - Shellescape server_root_password

v5.1.2 (2014-04-09)

  • [COOK-4519] - Fix error in run_dir for Ubuntu
  • [COOK-4531] - Fix pid and run_dir for Debian

v5.1.0 (2014-04-08)

[COOK-4523] - Allow for both :restart and :reload

v5.0.6 (2014-04-07)

  • [COOK-4519] - Updating specs to reflect pid file change on Ubuntu

v5.0.4 (2014-04-07)

  • [COOK-4519] - Fix path to pid file on Ubuntu

v5.0.2 (2014-04-01)

  • Moving server_deprecated into recipes directory

v5.0.0 (2014-03-31)

  • Rewriting as a library cookbook
  • Exposing mysql_service and mysql_client resources
  • User now needs to supply configuration
  • Moving attribute driven recipe to server-deprecated

v4.1.2 (2014-02-28)

  • [COOK-4349] - Fix invalid platform check
  • [COOK-4184] - Better handling of Ubuntu upstart service
  • [COOK-2100] - Changing innodb_log_file_size tunable results in inability to start MySQL

v4.1.1 (2014-02-25)

  • **[COOK-2966] - Address foodcritic failures'
  • **[COOK-4182] - Template parse failure in /etc/init/mysql.conf (data_dir)'
  • **[COOK-4198] - Added missing tunable'
  • **[COOK-4206] - create root@, as well as root@localhost'

v4.0.20 (2014-01-18)

  • [COOK-3931] - MySQL Server Recipe Regression for Non-LTS Ubuntu Versions
  • [COOK-3945] - MySQL cookbook fails on Ubuntu 13.04/13.10
  • [COOK-3966] - mysql::server recipe can't find a template with debian 7.x
  • [COOK-3985] - Missing /etc/mysql/debian.cnf template on mysql::_server_debian.rb recipe (mysql 4.0.4)
  • [COOK-3974] - debian.cnf not updated
  • [COOK-4001] - Pull request: Fixes for broken mysql::server on Debian
  • [COOK-4071] - Mysql cookbook doesn't work on debian 7.2


Fixing style cops




  • COOK-3801 - Add innodb_adaptive_flushing_method and innodb_adaptive_checkpoint


fixing metadata version error. locking to 3.0


Locking yum dependency to '< 3'



  • [COOK-3943] Notifying service restart on grants update


[COOK-3952] - Adding 'recursive true' to directory resources



  • Adding support for Amazon Linux in attributes/server_rhel.rb
  • Fixing bug where unprivileged users cannot connect over a local socket. Adding integration test.
  • Fixing bug in mysql_grants_cmd generation


  • [COOK-3928] Heavily refactoring for readability. Moving platform implementation into separate recipes
  • Moving integration tests from minitest to serverspec, removing "improper" tests
  • Moving many attributes into the ['mysql']['server']['whatever'] namespace
  • [COOK-3481] - Merged Lucas Welsh's Windows bits and moved into own recipe
  • [COOK-3697] - Adding security hardening attributes
  • [COOK-3780] - Fixing data_dir on Debian and Ubuntu
  • [COOK-3807] - Don't use execute[assign-root-password] on Debian and Ubuntu
  • [COOK-3881] - Fixing /etc being owned by mysql user



  • COOK-3752 - mysql service fails to start in mysql::server recipe


  • Fix a failed release attempt for v3.0.8



  • COOK-3749 - Fix a regression with Chef 11-specific features



  • COOK-3674 - Fix an issue where the MySQL server fails to set the root password correctly when data_dir is a non-default value
  • COOK-3647 - Fix README typo (databas => database)
  • COOK-3477 - Fix log-queries-not-using-indexes not working
  • COOK-3436 - Pull percona repo in compilation phase
  • COOK-3208 - Fix README typo (LitenPort => ListenPort)
  • COOK-3149 - Create my.cnf before installing
  • COOK-2681 - Fix log_slow_queries for 5.5+
  • COOK-2606 - Use proper bind address on cloud providers


  • COOK-3498 - Add support for replicate_* variables in my.cnf



  • COOK-3310 - Fix missing GRANT option
  • COOK-3233 - Fix escaping special characters
  • COOK-3156 - Fix GRANTS file when remote_root_acl is specified
  • COOK-3134 - Fix Chef 11 support
  • COOK-2318 - Remove redundant if block around node.mysql.tunable.log_bin



  • [COOK-2158]: apt-get update is run twice at compile time
  • [COOK-2832]: mysql grants.sql file has errors depending on attrs
  • [COOK-2995]: server.rb is missing a platform_family comparison value


  • [COOK-2102]: innodb_flush_log_at_trx_commit value is incorrectly set based on CPU count


Note This is a backwards incompatible version with previous versions of the cookbook. Tickets that introduce incompatibility are COOK-2615 and COOK-2617.

  • [COOK-2478] - Duplicate 'read_only' server attribute in base and tunable
  • [COOK-2471] - Add tunable to set slave_compressed_protocol for reduced network traffic
  • [COOK-1059] - Update attributes in mysql cookbook to support missing options for my.cnf usable by Percona
  • [COOK-2590] - Typo in server recipe to do with conf_dir and confd_dir
  • [COOK-2602] - Add lower_case_table_names tunable
  • [COOK-2430] - Add a tunable to create a network ACL when allowing remote_root_access
  • [COOK-2619] - mysql: isamchk deprecated
  • [COOK-2515] - Better support for SUSE distribution for mysql cookbook
  • [COOK-2557] - mysql::percona_repo attributes missing and key server typo
  • [COOK-2614] - Duplicate innodb_file_per_table
  • [COOK-2145] - MySQL cookbook should remove anonymous and password less accounts
  • [COOK-2553] - Enable include directory in my.cnf template for any platform
  • [COOK-2615] - Rename key_buffer to key_buffer_size
  • [COOK-2626] - Percona repo URL is being constructed incorrectly
  • [COOK-2616] - Unneeded attribute thread_cache
  • [COOK-2618] - myisam-recover not using attribute value
  • [COOK-2617] - open-files is a duplicate of open-files-limit


  • [COOK-2172] - Mysql cookbook duplicates binlog_format configuration


  • [COOK-1669] - Using platform("ubuntu") in default attributes always returns true
  • [COOK-1694] - Added additional my.cnf fields and reorganized cookbook to avoid race conditions with mysql startup and sql script execution
  • [COOK-1851] - Support server-id and binlog_format settings
  • [COOK-1929] - Update msyql server attributes file because setting attributes without specifying a precedence is deprecated
  • [COOK-1999] - Add read_only tunable useful for replication slave servers


  • [COOK-1967] - mysql: trailing comma in server.rb platform family


Important note for this release

Under Chef Solo, you must set the node attributes for the root, debian and repl passwords or the run will completely fail. See COOK-1737 for background on this.

  • [COOK-1390] - MySQL service cannot start after reboot
  • [COOK-1610] - Set root password outside preseed (blocker for drop-in mysql replacements)
  • [COOK-1624] - Mysql cookbook fails to even compile on windows
  • [COOK-1669] - Using platform("ubuntu") in default attributes always returns true
  • [COOK-1686] - Add mysql service start
  • [COOK-1687] - duplicate innodb_buffer_pool_size attribute
  • [COOK-1704] - mysql cookbook fails spec tests when minitest-handler cookbook enabled
  • [COOK-1737] - Fail a chef-solo run when server_root_password, server_debian_password, and/or server_repl_password is not set
  • [COOK-1769] - link to database recipe in mysql README goes to old chef/cookbooks repo instead of chef-cookbook organization
  • [COOK-1963] - use platform_family


Important note for this release

This version no longer installs Ruby bindings in the client recipe by default. Use the ruby recipe if you'd like the RubyGem. If you'd like packages from your distribution, use them in your application's specific cookbook/recipe, or modify the client packages attribute. This resolves the following tickets:

  • COOK-932
  • COOK-1009
  • COOK-1384

Additionally, this cookbook now has tests (COOK-1439) for use under test-kitchen.

The following issues are also addressed in this release.

  • [COOK-1443] - MySQL (>= 5.1.24) does not support innodb_flush_method = fdatasync
  • [COOK-1175] - Add Mac OS X support
  • [COOK-1289] - handle additional tunable attributes
  • [COOK-1305] - add auto-increment-increment and auto-increment-offset attributes
  • [COOK-1397] - make the port an attribute
  • [COOK-1439] - Add MySQL cookbook tests for test-kitchen support
  • [COOK-1236] - Move package names into attributes to allow percona to free-ride
  • [COOK-934] - remove deprecated mysql/libraries/database.rb, use the database cookbook instead.
  • [COOK-1475] - fix restart on config change


  • [COOK-1113] - Use an attribute to determine if upstart is used
  • [COOK-1121] - Add support for Windows
  • [COOK-1140] - Fix conf.d on Debian
  • [COOK-1151] - Fix server_ec2 handling /var/lib/mysql bind mount
  • [COOK-1321] - Document setting password attributes for solo


  • [COOK-992] - fix FATAL nameerror
  • [COOK-827] - mysql:server_ec2 recipe can't mount data_dir
  • [COOK-945] - FreeBSD support


  • [COOK-826] mysql::server recipe doesn't quote password string
  • [COOK-834] Add 'scientific' and 'amazon' platforms to mysql cookbook


  • [COOK-644] Mysql client cookbook 'package missing' error message is confusing
  • [COOK-645] RHEL6/CentOS6 - mysql cookbook contains 'skip-federated' directive which is unsupported on MySQL 5.1


  • [COOK-684] remove mysql_database LWRP


  • [COOK-633] ensure "cloud" attribute is available


  • [COOK-614] expose all mysql tunable settings in config
  • [COOK-617] bind to private IP if available


  • [COOK-605] install mysql-client package on ubuntu/debian


  • [COOK-465] allow optional remote root connections to mysql
  • [COOK-455] improve platform version handling
  • externalize conf_dir attribute for easier cross platform support
  • change datadir attribute to data_dir for consistency


  • fix regressions on debian platform
  • [COOK-578] wrap root password in quotes
  • [COOK-562] expose all tunables in my.cnf

Foodcritic Metric

6.1.1 failed this metric

FC005: Avoid repetition of resource declarations: /tmp/cook/6202e93303dc1057d2698756/mysql/libraries/provider_mysql_service_base.rb:78
FC023: Prefer conditional attributes: /tmp/cook/6202e93303dc1057d2698756/mysql/libraries/provider_mysql_service_smf.rb:6
FC023: Prefer conditional attributes: /tmp/cook/6202e93303dc1057d2698756/mysql/libraries/provider_mysql_service_systemd.rb:6
FC023: Prefer conditional attributes: /tmp/cook/6202e93303dc1057d2698756/mysql/libraries/provider_mysql_service_upstart.rb:6