Skip to main content

mysql_session resource

Use the mysql_session Chef InSpec audit resource to test SQL commands run against a MySQL database.



This resource is distributed with Chef InSpec and is automatically available for use.


This resource first became available in v1.0.0 of InSpec.


A mysql_session resource block declares the username and password to use for the session, and then the command to be run:

describe mysql_session('username', 'password').query('QUERY') do
  its('output') { should match(/expected-result/) }


  • mysql_session declares a username and password, connecting locally, with permission to run the query
  • query('QUERY') contains the query to be run
  • its('output') { should eq(/expected-result/) } compares the results of the query against the expected result in the test


The following examples show how to use this Chef InSpec audit resource.

Test for matching databases

sql = mysql_session('my_user','password')

describe sql.query('show databases like \'test\';') do
  its('output') { should_not match(/test/) }

Alternate Connection: Different Host

sql = mysql_session('my_user','password','')

Alternate Connection: Different Port

sql = mysql_session('my_user','password','localhost',3307)

Alternate Connection: Using a socket

sql = mysql_session('my_user','password', nil, nil, '/var/lib/mysql-default/mysqld.sock')

Test for a successful query

describe mysql_session('my_user','password').query('show tables in existing_database;') do
  its('exit_status') { should eq(0) }

Test for a failing query

describe mysql_session('my_user','password').query('show tables in non_existent_database;') do
  its('exit_status') { should_not eq(0) }

Test for specific error message

describe mysql_session('my_user','password').query('show tables in non_existent_database;') do
  its('stderr') { should match(/Unknown database/) }


This Chef InSpec audit resource builds a command object and returns the the result object. For a full list of available matchers, see our Universal Matchers page.

Edit this page on GitHub

Thank you for your feedback!


Search Results