Se seus usuários compartilharem um servidor de banco de dados instância , não tenho certeza se você pode impedi-los de ver quais bancos de dados estão no servidor. (o mysql tem "show databases"). Se esse for um recurso crítico para você, convém considerar uma instância do servidor por cliente. Isso permite que você ajuste a instância do servidor (tamanho do cache, tamanho de classificação, esse tipo de coisa) para sua aplicação.
OBSERVAÇÃO: isso exigirá que eles utilizem uma porta específica que você atribuiu a eles ou que você possa atribuir endereços IP a serem usados. (Se você utiliza endereços IP rfc 1918 (os endereços IP "privados"), você tem um número virtualmente ilimitado destes, e isso funcionaria bem, desde que esses servidores estejam sendo acessados por máquinas em seu datacenter.)
Outra opção é utilizar servidores virtuais, como xen ou vmware. Isso lhe dará ainda mais controle sobre a configuração do sistema operacional para cada cliente, e protege-os de falta de recursos por um usuário de porquinho (se você configurar seus hosts de xen com limites razoáveis).
Acho que a solução de hospedagem virtual atende a todas as suas necessidades, mesmo indo além do escopo específico da sua pergunta. IMO, é a maneira mais fácil e rápida de alcançar seu objetivo.
Quanto ao motor que eu recomendo: Postgresql, todos os dias, durante todo o dia. No entanto, você precisa fornecer o que seus clientes desejam. Hmm, se você usa máquinas virtuais, você pode fornecer os dois!