No Padrão de Hierarquia do Sistema de Arquivos, '/ var / lib / é declarado como (em itálico a parte mais importante):
5.8.1 Propósito
Esta hierarquia contém informações de estado relativas a um aplicativo ou o sistema. Informações de estado são dados que os programas modificam enquanto executar, e que pertence a um host específico. Usuários nunca devem precisar modificar arquivos em / var / lib para configurar a operação de um pacote.
A informação do estado é geralmente usada para preservar a condição de aplicação (ou um grupo de aplicações inter-relacionadas) entre invocações e entre diferentes instâncias do mesmo aplicativo. As informações de estado geralmente devem permanecer válidas após uma reinicialização, não ser registro de saída, e não deve ser dados em spool.
Um aplicativo (ou um grupo de aplicativos inter-relacionados) deve usar um subdiretório de / var / lib para seus dados. Há um subdiretório necessário, / var / lib / misc, que é destinado ao estado arquivos que não precisam de um subdiretório; os outros subdiretórios devem só estará presente se o pedido em questão estiver incluído no distribuição.
/ var / lib / é o local que deve ser usado para toda a distribuição suporte de embalagem. Distribuições diferentes podem usar nomes diferentes, Claro.
Resumindo: / var / lib / é para dados que são usados localmente.
Portanto, faz todo o sentido colocar os dados de um banco de dados no diretório / var / lib / {mysql | postgress} /, mas ... o FHS é um padrão criado principalmente para ser usado por distribuições . Como usuário, você é livre para colocar seus dados onde quiser e é principalmente uma questão de opinião.
Você está entendendo mal a palavra "local". / usr / local / bin / não é para software de sistema, mas para seu próprio software (basicamente qualquer coisa com "local" deve nunca ser tocada pelo sistema. Como explicado pela FHS:
4.9.1 Propósito
A hierarquia / usr / local é para ser usada pelo administrador do sistema quando instalar software localmente. Precisa estar a salvo de ser sobrescritos quando o software do sistema é atualizado. Pode ser usado para programas e dados que são compartilháveis entre um grupo de hosts, mas não encontrado em / usr. O software instalado localmente deve ser colocado dentro / usr / local em vez de / usr, a menos que esteja sendo instalado para substituir ou atualizar o software em / usr.
Um executável instalado a partir do software do sistema nunca deve ir para qualquer local.
Agora, para / usr / lib / .
4.7.1 Propósito
/ usr / lib inclui arquivos de objetos, bibliotecas e binários internos que não se destina a ser executado diretamente pelos usuários ou shell scripts. Os aplicativos podem usar um único subdiretório / usr / lib. Se um aplicativo usar um subdiretório, todos dados dependentes de arquitetura usados exclusivamente pelo aplicativo ser colocado dentro desse subdiretório.
postgressql é provavelmente um daemon iniciado na inicialização? Se assim for, faz sentido colocá-lo aqui. Você não deve usar o comando sozinho, mas iniciar um serviço. Os arquivos em / usr / lib / tendem a ter seu próprio usuário e grupo e / ou um daemon que restringe o acesso a / var / lib (somente o mysqld pode acessar / var / lib / mysql / por exemplo; isto será o mesmo para postgressql)