Olá, bom dia/tarde/noite, eu sempre usei Windows/Ubuntu e resolvi testar o Fedora 26 (acho que é a ultima versão). Faço curso de Ciência da Computação e uso o banco de dados postgresql e estou desenvolvendo aplicação em Java. Acontece que toda vez que vou acessar o banco pela minha aplicação, não importando o usuário que eu acesse, dá erro de autenticação do tipo 'ident'. Já fiz os comandos
su postgres
psql
\password postgres
digitei nova senha, eu consigo me logar pelo postgres tanto no terminal quanto no pgadmin 3 e 4.
Muita coisa que vi na internet me mandava alterar o arquivo pg_hba.conf, mas eu não achei ele nos meus diretórios, somente um pg_hba.conf.sample, que ao parecer tinha o mesmo conteúdo, mas sempre tinha que procurar essa linha
# Database administrative login by UNIX sockets
local all postgres ident sameuser
e eu nunca tenho ela, o máximo que tenho é:
@authcomment@
# TYPE DATABASE USER ADDRESS METHOD
@remove-line-for-nolocal@# "local" is for Unix domain socket connections only
@remove-line-for-nolocal@local all all @authmethodlocal@
# IPv4 local connections:
host all all 127.0.0.1/32 @authmethodhost@
# IPv6 local connections:
host all all ::1/128 @authmethodhost@
# Allow replication connections from localhost, by a user with the
# replication privilege.
@remove-line-for-nolocal@#local replication @default_username@ @authmethodlocal@
#host replication @default_username@ 127.0.0.1/32 @authmethodhost@
#host replication @default_username@ ::1/128 @authmethodhost@
Já desinstalei o postgres, e o voltei a instalar e dar o comando
sudo postgres initdb
para criar o arquivo pg_hba, mas aparece esse erro
WARNING: using obsoleted argument syntax, try --help
WARNING: arguments transformed to: postgresql-setup --initdb --unit postgresql
* Initializing database in '/var/lib/pgsql/data'
ERROR: Data directory /var/lib/pgsql/data is not empty!
ERROR: Initializing database failed, possibly see /var/lib/pgsql/initdb_postgresql.log
Caso seja necessário, estou fazendo o acesso ao postgresql na aplicação desta maneira. E sim, eu tenho o driver JDBC vinculado ao meu código:
//de parametros eu uso conectar("jdbc:postgresql://localhost:5432/", "NomeDaDataBase", "user", "senha");
private static boolean conectar(String local,String banco,String usuario,String senha)
{
boolean conectado=false;
try
{
String url = local+banco; //"jdbc:postgresql://localhost/"+banco;
connect = DriverManager.getConnection(url, usuario,senha);
con = new Conexao(connect, "");
conectado=true;
}
catch ( SQLException sqlex )
{
erro="Impossivel conectar com a base de dados: " + sqlex.toString();
}
catch ( Exception ex )
{
erro="Outro erro: " + ex.toString();
}
return conectado;
}