Mysql Operations¶
Manage MySQL databases, users and privileges.
Requires the mysql CLI executable on the target host(s).
- All operations in this module take four optional arguments:
 mysql_user: the username to connect to mysql tomysql_password: the password for the connecting usermysql_host: the hostname of the server to connect tomysql_port: the port of the server to connect to
See the example/mysql.py
Facts used in these operations: mysql.MysqlDatabases, mysql.MysqlUserGrants, mysql.MysqlUsers.
mysql.database¶
mysql.database(
    database: str, present: bool=True, collate: str | None=None, charset: str | None=None,
    user: str | None=None, user_hostname: str="localhost",
    user_privileges: str | list[str]="ALL", mysql_user: str | None=None,
    mysql_password: str | None=None, mysql_host: str | None=None, mysql_port: int | None=None,
    **kwargs,
)
- Note:
 This operation also inherits all global arguments.
mysql.dump¶
Stateless operation
This operation will always execute commands and is not idempotent.
Dump a MySQL database into a .sql file. Requires mysqldump.
mysql.dump(
    dest: str, database: str | None=None, mysql_user: str | None=None,
    mysql_password: str | None=None, mysql_host: str | None=None, mysql_port: int | None=None,
    **kwargs,
)
dest: name of the file to dump the SQL to
database: name of the database to dump
mysql_*: global module arguments, see above
Example:
mysql.dump(
    name="Dump the pyinfra_stuff database",
    dest="/tmp/pyinfra_stuff.dump",
    database="pyinfra_stuff",
)
- Note:
 This operation also inherits all global arguments.
mysql.load¶
Stateless operation
This operation will always execute commands and is not idempotent.
Load .sql file into a database.
mysql.load(
    src: str, database: str | None=None, mysql_user: str | None=None,
    mysql_password: str | None=None, mysql_host: str | None=None, mysql_port: int | None=None,
    **kwargs,
)
src: the filename to read from
database: name of the database to import into
mysql_*: global module arguments, see above
Example:
mysql.load(
    name="Import the pyinfra_stuff dump into pyinfra_stuff_copy",
    src="/tmp/pyinfra_stuff.dump",
    database="pyinfra_stuff_copy",
)
- Note:
 This operation also inherits all global arguments.
mysql.privileges¶
Add/remove MySQL privileges for a user, either global, database or table specific.
mysql.privileges(
    user: str, privileges: str | list[str] | set[str], user_hostname="localhost",
    database="*", table="*", flush=True, with_grant_option=False, mysql_user: str | None=None,
    mysql_password: str | None=None, mysql_host: str | None=None, mysql_port: int | None=None,
    **kwargs,
)
user: name of the user to manage privileges for
privileges: list of privileges the user should have (see also:
with_grant_optionargument)user_hostname: the hostname of the user
database: name of the database to grant privileges to (defaults to all)
table: name of the table to grant privileges to (defaults to all)
flush: whether to flush (and update) the privileges table after any changes
with_grant_option: whether the grant option privilege should be set
mysql_*: global module arguments, see above
- Note:
 This operation also inherits all global arguments.
mysql.sql¶
Stateless operation
This operation will always execute commands and is not idempotent.
Execute arbitrary SQL against MySQL.
mysql.sql(
    sql: str, database: str | None=None, mysql_user: str | None=None,
    mysql_password: str | None=None, mysql_host: str | None=None, mysql_port: int | None=None,
    **kwargs,
)
sql: SQL command(s) to execute
database: optional database to open the connection with
mysql_*: global module arguments, see above
- Note:
 This operation also inherits all global arguments.
mysql.user¶
mysql.user(
    user: str, present: bool=True, user_hostname: str="localhost", password: str | None=None,
    privileges: str | list[str] | None=None, require: str | None=None,
    require_cipher: str | None=None, require_issuer: str | None=None,
    require_subject: str | None=None, max_connections: int | None=None,
    max_queries_per_hour: int | None=None, max_updates_per_hour: int | None=None,
    max_connections_per_hour: int | None=None, mysql_user: str | None=None,
    mysql_password: str | None=None, mysql_host: str | None=None, mysql_port: int | None=None,
    **kwargs,
)
- Note:
 This operation also inherits all global arguments.
            pyinfra next