diff --git a/etc/mariadb/MariadDB.md b/etc/mariadb/MariadDB.md
new file mode 100644
index 0000000000000000000000000000000000000000..17b6a44b0e04736dbc45cd01eded48e1be584920
--- /dev/null
+++ b/etc/mariadb/MariadDB.md
@@ -0,0 +1,51 @@
+# MariaDB
+
+## reset unknown root password
+
+MariaDB-Service
+
+    systemctl stop mariadb.service
+    mysqld_safe --skip-grant-tables --skip-networking &
+    
+MariaDB
+
+    mysql -u root
+    mysql> use mysql;
+    mysql> select Host,User,Password,plugin,authentication_string from user;
+    mysql> update user set password=PASSWORD("mysql") where User='root';
+    mysql> update user set plugin='' where User='root';
+    mysql> flush privileges;
+    mysql> exit
+
+MariaDB-Service
+
+    mysqladmin shutdown -u root -p
+    systemctl start mariadb.service
+
+## add local user
+
+    mysql -u root -p mysql
+    mysql> create database tw;
+    mysql> GRANT ALL PRIVILEGES ON *.* TO 'tw'@'localhost' IDENTIFIED BY 'Password' WITH GRANT OPTION;
+    mysql> GRANT ALL PRIVILEGES ON tw.* TO 'tw'@'localhost' IDENTIFIED BY 'Password' WITH GRANT OPTION;
+    mysql> flush privileges;
+    mysql> exit
+    mysql -u tw -p tw
+    mysql> show databases;
+    mysql> SELECT USER(), CURRENT_USER();
+    mysql> exit
+    sudo systemctl restart mariadb.service
+
+## add user covid19data
+    mysql -u root -p mysql
+    mysql> create database covid19data;
+    mysql> GRANT ALL PRIVILEGES ON *.* TO 'covid19data'@'localhost' IDENTIFIED BY 'covid19datapwd';
+    mysql> GRANT ALL PRIVILEGES ON covid19data.* TO 'covid19data'@'localhost' IDENTIFIED BY 'covid19datapwd';
+    mysql> flush privileges;
+    mysql> exit
+    mysql -u covid19data -p covid19data
+    mysql> show databases;
+    mysql> SELECT USER(), CURRENT_USER();
+    mysql> exit
+    sudo systemctl restart mariadb.service
+    
\ No newline at end of file
diff --git a/etc/mariadb/create_user_and_db.sql b/etc/mariadb/create_user_and_db.sql
new file mode 100644
index 0000000000000000000000000000000000000000..db7275bf95351df3d9c61f1043318eccc4bc8aac
--- /dev/null
+++ b/etc/mariadb/create_user_and_db.sql
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:555b9ef8066aa9b17eee3793d303ac7a0225ef721212eb6de880c6a9cbdfe7d7
+size 50
diff --git a/requirements/dev.in b/requirements/dev.in
index 99803060ae9e39ff8bee30b5b15b4b5228e66118..868d8a31602f9acb27d544b531688a48949aa120 100644
--- a/requirements/dev.in
+++ b/requirements/dev.in
@@ -9,6 +9,7 @@ Flask-Login==0.5.0
 SQLAlchemy>=1.4.5
 celery[redis]>=5.0.5
 psycopg2-binary>=2.8.6
+mysqlclient==2.0.3
 wget>=3.2
 pyecharts>=1.9.0
 pyecharts-extras>=0.0.5
diff --git a/src/config.py b/src/config.py
index 9fc4dff014590e4e93978a1aefbefed0a829544f..bdf375660b5ad837f027975660c8b23d602f7b5e 100644
--- a/src/config.py
+++ b/src/config.py
@@ -5,10 +5,10 @@ CELERY_CONF_WORKER_SEND_TASK_EVENTS = True
 CELERY_CONF_TASK_SEND_SENT_EVENT = True
 CELERY_LOG_REDIRECT = '1'
 CELERY_LOG_REDIRECT_LEVEL = 'INFO'
-SQLALCHEMY_POSTGRES_USER = 'covid19data'
-SQLALCHEMY_POSTGRES_PW = 'covid19datapwd'
-SQLALCHEMY_POSTGRES_URL = 'localhost'
-SQLALCHEMY_POSTGRES_DB = 'covid19data'
+SQLALCHEMY_DATABASE_USER = 'covid19data'
+SQLALCHEMY_DATABASE_PW = 'covid19datapwd'
+SQLALCHEMY_DATABASE_HOST = 'localhost'
+SQLALCHEMY_DATABASE_DB = 'covid19data'
 SQLALCHEMY_ITEMS_PER_PAGE = 10
 SQLALCHEMY_TRACK_MODIFICATIONS = True
 FLASK_ADMIN_SWATCH = 'superhero'
diff --git a/src/database.py b/src/database.py
index 8deaf8440213051517d80801f6e42f9863751c5b..e9e7a88e7f429fe7b1360e589bac19329425e20c 100644
--- a/src/database.py
+++ b/src/database.py
@@ -24,12 +24,17 @@ def create_app():
     login_manager.login_view = 'usr.login'
     login_manager.init_app(my_app)
     my_app.config.from_object("config")
-    my_db_url = 'postgresql+psycopg2://{user}:{pw}@{url}/{db}'.format(
-        user=my_app.config['SQLALCHEMY_POSTGRES_USER'],
-        pw=my_app.config['SQLALCHEMY_POSTGRES_PW'],
-        url=my_app.config['SQLALCHEMY_POSTGRES_URL'],
-        db=my_app.config['SQLALCHEMY_POSTGRES_DB'])
-    my_app.config['SQLALCHEMY_DATABASE_URI'] = my_db_url
+    my_db_url_mysql = "mysql + mysqldb://{user}:{pw}@{url}/{db}".format(
+        user=my_app.config['SQLALCHEMY_DATABASE_USER'],
+        pw=my_app.config['SQLALCHEMY_DATABASE_PW'],
+        url=my_app.config['SQLALCHEMY_DATABASE_HOST'],
+        db=my_app.config['SQLALCHEMY_DATABASE_DB'])
+    my_db_url_postgresql = 'postgresql+psycopg2://{user}:{pw}@{url}/{db}'.format(
+        user=my_app.config['SQLALCHEMY_DATABASE_USER'],
+        pw=my_app.config['SQLALCHEMY_DATABASE_PW'],
+        url=my_app.config['SQLALCHEMY_DATABASE_HOST'],
+        db=my_app.config['SQLALCHEMY_DATABASE_DB'])
+    my_app.config['SQLALCHEMY_DATABASE_URI'] = my_db_url_postgresql
     my_app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False  # silence the deprecation warning
     my_app.config['FLASK_ADMIN_SWATCH'] = 'superhero'
     # cache.init_app(app)