diff --git a/.travis.yml b/.travis.yml
index 5b346ef489ee890d7509bc62abe1c44538e24dec..2b11670fc55372579c6293d9624e5c1fa0471a9c 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -56,9 +56,9 @@ jobs:
       before_install: skip
       script:
         # Install and run `yamllint`
-        - pip install --user yamllint
-        # yamllint disable-line rule:line-length
-        - yamllint -s . .yamllint pillar.example test/salt/pillar/mysql.sls
+        # Need at least `v1.17.0` for the `yaml-files` setting
+        - pip install --user yamllint>=1.17.0
+        - yamllint -s .
         # Install and run `commitlint`
         - npm install @commitlint/config-conventional -D
         - npm install @commitlint/travis-cli -D
diff --git a/.yamllint b/.yamllint
index 8cee7a4641b9129882d19a6e03a90b17b1cce58e..d33309935162d3bec6ab372364c582d4957283ed 100644
--- a/.yamllint
+++ b/.yamllint
@@ -6,12 +6,26 @@ extends: default
 
 # Files to ignore completely
 # 1. All YAML files under directory `node_modules/`, introduced during the Travis run
-# 2. Any YAML files using Jinja (result in `yamllint` syntax errors)
+# 2. Any SLS files under directory `test/`, which are actually state files
+# 3. Any YAML files using Jinja (result in `yamllint` syntax errors)
 ignore: |
   node_modules/
+  test/**/states/**/*.sls
   mysql/supported_sections.yaml
 
+yaml-files:
+  # Default settings
+  - '*.yaml'
+  - '*.yml'
+  - .yamllint
+  # SaltStack Formulas additional settings
+  - '*.example'
+  - test/**/*.sls
+
 rules:
+  empty-values:
+    forbid-in-block-mappings: true
+    forbid-in-flow-mappings: true
   line-length:
     # Increase from default of `80`
     # Based on https://github.com/PyCQA/flake8-bugbear#opinionated-warnings (`B950`)
diff --git a/mysql/defaults.yaml b/mysql/defaults.yaml
index 0e960371d58b79e2c3e4102b5c05dbfffcd6ddc0..83f556dc173ec9809c47418713637a47d9de501e 100644
--- a/mysql/defaults.yaml
+++ b/mysql/defaults.yaml
@@ -26,8 +26,9 @@ mysql:
 
   macos:
     userhomes: /Users
-    user:
-    group:
+    # `user` and `group` are set from `map.jinja`
+    # user: ~
+    # group: ~
     dl:
       tmpdir: /tmp/mysqltmp
       prefix: /usr/local
diff --git a/mysql/osfamilymap.yaml b/mysql/osfamilymap.yaml
index 9e032db55529a5744850a389880606c96a0a6bbb..7730afb3458178def84c9c4be07f6328be5a7686 100644
--- a/mysql/osfamilymap.yaml
+++ b/mysql/osfamilymap.yaml
@@ -43,7 +43,7 @@ RedHat:
   config:
     file: /etc/my.cnf
     sections:
-      client:
+      client: {}
       mysqld_safe:
         log_error: /var/log/mysql/mysqld.log
         pid_file: /var/run/mysql/mysqld.pid
@@ -63,11 +63,14 @@ Suse:
       client:
         socket: /var/run/mysql/mysql.sock
       mysqld:
+        # Empty values below to be resolved, disabling the rule in the meantime
+        # yamllint disable rule:empty-values
         port:
         user:
         socket:
         datadir:
         tmpdir:
+        # yamllint enable rule:empty-values
         innodb_file_format: Barracuda
         innodb_file_per_table: 'ON'
         server-id: 1
@@ -84,6 +87,8 @@ Arch:
   clientpkg: mariadb-clients
   service: mysqld
   pythonpkg: mysql-python
+  # Empty value below to be resolved, disabling the rule in the meantime
+  # yamllint disable-line rule:empty-values
   dev:
 
   config:
@@ -213,8 +218,11 @@ FreeBSD:
       client:
         socket: /tmp/mysql.sock
       mysqld:
+        # Empty values below to be resolved, disabling the rule in the meantime
+        # yamllint disable rule:empty-values
         user:
         datadir:
+        # yamllint enable rule:empty-values
         socket: /tmp/mysql.sock
         skip-external-locking: noarg_present
         key_buffer_size: 16M