On this page
mysql_db - Add or remove MySQL databases from a remote host.
Synopsis
- Add or remove MySQL databases from a remote host.
 
Requirements
The below requirements are needed on the host that executes this module.
- MySQLdb (Python 2.x)
 - PyMySQL (Python 2.7 and Python 3.X), or
 - mysql (command line binary)
 - mysqldump (command line binary)
 
Parameters
| Parameter | Choices/Defaults | Comments | 
|---|---|---|
| collation | 
        
        Collation mode (sorting). This only applies to new table/databases and does not update existing ones, this is a limitation of MySQL.
         | 
     |
| config_file  
        (added in 2.0)
         | 
      Default: 
        "~/.my.cnf"
         | 
      
        
        Specify a config file from which user and password are to be read.
         | 
     
| connect_timeout  
        (added in 2.1)
         | 
      Default: 
        30
         | 
      
        
        The connection timeout when connecting to the MySQL server.
         | 
     
| encoding | 
        
        Encoding mode to use, examples include  utf8 or latin1_swedish_ci
        | 
     |
| login_host | Default: 
        "localhost"
         | 
      
        
        Host running the database.
         | 
     
| login_password | 
        
        The password used to authenticate with.
         | 
     |
| login_port | Default: 
        3306
         | 
      
        
        Port of the MySQL server. Requires login_host be defined as other then localhost if login_port is used.
         | 
     
| login_unix_socket | 
        
        The path to a Unix domain socket for local connections.
         | 
     |
| login_user | 
        
        The username used to authenticate with.
         | 
     |
| name  
        required
         | 
      
        
        name of the database to add or remove
        
       
        name=all May only be provided if state is  
       dump or import.
       
        if name=all Works like --all-databases option for mysqldump (Added in 2.0)
        
       aliases: db  | 
     |
| quick  
        bool
         
        (added in 2.1)
         | 
      
       
  | 
      
        
        Option used for dumping large tables
         | 
     
| single_transaction  
        bool
         
        (added in 2.1)
         | 
      
       
  | 
      
        
        Execute the dump in a single transaction
         | 
     
| ssl_ca  
        (added in 2.0)
         | 
      
        
        The path to a Certificate Authority (CA) certificate. This option, if used, must specify the same certificate as used by the server.
         | 
     |
| ssl_cert  
        (added in 2.0)
         | 
      
        
        The path to a client public key certificate.
         | 
     |
| ssl_key  
        (added in 2.0)
         | 
      
        
        The path to the client private key.
         | 
     |
| state | 
       
  | 
      
        
        The database state
         | 
     
| target | 
        
        Location, on the remote host, of the dump file to read from or write to. Uncompressed SQL files ( .sql) as well as bzip2 (.bz2), gzip (.gz) and xz (Added in 2.0) compressed files are supported.
        | 
     
Notes
Note
- Requires the PyMySQL (Python 2.7 and Python 3.X) or MySQL-python (Python 2.X) package on the remote host, as well as mysql and mysqldump binaries.
 - This module is not idempotent when state is 
import, and will import the dump file each time if run more than once. - Requires the PyMySQL (Python 2.7 and Python 3.X) or MySQL-python (Python 2.X) Python package on the remote host. For Ubuntu, this is as easy as apt-get install python-pymysql. (See apt.) For CentOS/Fedora, this is as easy as yum install python2-PyMySQL. (See yum.)
 - Both 
login_passwordandlogin_userare required when you are passing credentials. If none are present, the module will attempt to read the credentials from~/.my.cnf, and finally fall back to using the MySQL default login of ‘root’ with no password. 
Examples
- name: Create a new database with name 'bobdata'
  mysql_db:
    name: bobdata
    state: present
# Copy database dump file to remote host and restore it to database 'my_db'
- name: Copy database dump file
  copy:
    src: dump.sql.bz2
    dest: /tmp
- name: Restore database
  mysql_db:
    name: my_db
    state: import
    target: /tmp/dump.sql.bz2
- name: Dump all databases to hostname.sql
  mysql_db:
    state: dump
    name: all
    target: /tmp/{{ inventory_hostname }}.sql
- name: Import file.sql similar to mysql -u <username> -p <password> < hostname.sql
  mysql_db:
    state: import
    name: all
    target: /tmp/{{ inventory_hostname }}.sql
  Status
This module is flagged as preview which means that it is not guaranteed to have a backwards compatible interface.
Maintenance
This module is flagged as community which means that it is maintained by the Ansible Community. See Module Maintenance & Support for more info.
For a list of other modules that are also maintained by the Ansible Community, see here.
Author
- Ansible Core Team
 
Hint
If you notice any issues in this documentation you can edit this document to improve it.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
 https://docs.ansible.com/ansible/2.6/modules/mysql_db_module.html