| .. Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you 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 |
| |
| .. http://www.apache.org/licenses/LICENSE-2.0 |
| |
| .. Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| |
| |
| |
| MySQL Connection |
| ================ |
| The MySQL connection type provides connection to a MySQL database. |
| |
| Configuring the Connection |
| -------------------------- |
| Host (required) |
| The host to connect to. |
| |
| Schema (optional) |
| Specify the schema name to be used in the database. |
| |
| Login (required) |
| Specify the user name to connect. |
| |
| Password (required) |
| Specify the password to connect. |
| |
| Extra (optional) |
| Specify the extra parameters (as json dictionary) that can be used in MySQL |
| connection. The following parameters are supported: |
| |
| * ``charset``: specify charset of the connection |
| * ``cursor``: one of ``sscursor``, ``dictcursor``, ``ssdictcursor`` . Specifies cursor class to be |
| used |
| * ``local_infile``: controls MySQL's LOCAL capability (permitting local data loading by |
| clients). See `MySQLdb docs <https://mysqlclient.readthedocs.io/user_guide.html>`_ |
| for details. |
| * ``unix_socket``: UNIX socket used instead of the default socket. |
| * ``ssl``: Dictionary of SSL parameters that control connecting using SSL. Those |
| parameters are server specific and should contain ``ca``, ``cert``, ``key``, ``capath``, |
| ``cipher`` parameters. See |
| `MySQLdb docs <https://mysqlclient.readthedocs.io/user_guide.html>`_ for details. |
| Note that to be useful in URL notation, this parameter might also be |
| a string where the SSL dictionary is a string-encoded JSON dictionary. |
| |
| Example "extras" field: |
| |
| .. code-block:: json |
| |
| { |
| "charset": "utf8", |
| "cursor": "sscursor", |
| "local_infile": true, |
| "unix_socket": "/var/socket", |
| "ssl": { |
| "cert": "/tmp/client-cert.pem", |
| "ca": "/tmp/server-ca.pem'", |
| "key": "/tmp/client-key.pem" |
| } |
| } |
| |
| or |
| |
| .. code-block:: json |
| |
| { |
| "charset": "utf8", |
| "cursor": "sscursor", |
| "local_infile": true, |
| "unix_socket": "/var/socket", |
| "ssl": "{\"cert\": \"/tmp/client-cert.pem\", \"ca\": \"/tmp/server-ca.pem\", \"key\": \"/tmp/client-key.pem\"}" |
| } |
| |
| When specifying the connection as URI (in ``AIRFLOW_CONN_*`` variable) you should specify it |
| following the standard syntax of DB connections - where extras are passed as parameters |
| of the URI. Note that all components of the URI should be URL-encoded. |
| |
| For example: |
| |
| .. code-block:: bash |
| |
| export AIRFLOW_CONN_MYSQL_DEFAULT='mysql://mysql_user:XXXXXXXXXXXX@1.1.1.1:3306/mysqldb?ssl=%7B%22cert%22%3A+%22%2Ftmp%2Fclient-cert.pem%22%2C+%22ca%22%3A+%22%2Ftmp%2Fserver-ca.pem%22%2C+%22key%22%3A+%22%2Ftmp%2Fclient-key.pem%22%7D' |
| |
| .. note:: |
| If encounter UnicodeDecodeError while working with MySQL connection, check |
| the charset defined is matched to the database charset. |