Configuring MySQL / MariaDB¶
This section applies only to those who wish to use the MySQL database, instead of the default SQLite database. It assumes that you already have a working MySQL or MariaDB server.
1. Install the client libraries¶
The Python client library for MySQL/MariaDB must be installed. How to do this depends on your operating system and how you installed WeeWX.
sudo apt install mysql-client
sudo apt install python3-mysqldb
sudo yum install MySQL-python
sudo zypper install python3-mysqlclient
The base MySQL libraries are included as part of a normal pip install. However, you might want to install a standalone MySQL or MariaDB client to help with testing.
If you plan to use MySQL or MariaDB with sha256_password
or
caching_sha2_password
authentication, you will also need to install the
module cryptography
. On some operating systems this can be a bit of a
struggle, but the following usually works. The key step is to update pip
before trying the install.
# Activate the WeeWX virtual environment
source ~/weewx-venv/bin/activate
# Make sure pip is up-to-date
python3 -m pip install pip --upgrade
# Install cryptography
python3 -m pip install cryptography
2. Change the WeeWX configuration to use MySQL¶
In the WeeWX configuration file, change the
[[wx_binding]]
section to point to the MySQL database, archive_mysql
, instead of the SQLite
database archive_sqlite
.
After the change, it will look something like this (change Highlighted ):
[[wx_binding]]
# The database should match one of the sections in [Databases]
database = archive_mysql
# The name of the table within the database
table_name = archive
# The class to manage the database
manager = weewx.manager.DaySummaryManager
# The schema defines to structure of the database contents
schema = schemas.wview_extended.schema
3. Configure the MySQL host and credentials¶
Assuming that you want to use the default database configuration, the
[[MySQL]]
section
should look something like this:
[[MySQL]]
driver = weedb.mysql
host = localhost
user = weewx
password = weewx
This assumes user weewx
has the password weewx
. Adjust as necessary.
4. Configure permissions¶
Configure MySQL to give the necessary permissions for the database weewx
to whatever MySQL user you choose. Here are the necessary minimum permissions,
again assuming user weewx
with password weewx
. Adjust as necessary.
CREATE USER 'weewx'@'localhost' IDENTIFIED BY 'weewx';
GRANT select, update, create, delete, insert, alter, drop ON weewx.* TO weewx@localhost;