O problema estava relacionado ao SELinux. As permissões do SELinux nos diretórios recém-criados não foram configuradas corretamente.
Descobri isso observando /var/log/messages
. Tinha entradas como:
kernel: type=1400 audit(...): avc: denied ...
Para corrigir, usei:
semanage fcontext -a -t mysqld_db_t "/var/lib/mysql(/.*)?"
restorecon -Rv /var/lib/mysql
O primeiro comando provavelmente não foi necessário, pois eu consegui
/usr/sbin/semanage: File context for /var/lib/mysql(/.*)? already defined
O segundo comando fez o truque.