Atributos com valore atualizados ao abrir sistema [RESOLVIDO]

Olá,

Queria saber como que faço pra alterar o valor de um atributo que tem um valor padrão quando é acessado.

Tipo assim. Tenho uma classe com dois atributos estáticos:
public static String loginmySQL = “root”
public static String senhamySQL = “”

Durante a execução do programa, estes valores alteram caso o usuário queira mudar esses valores. Preciso que esses valores permaneçam alterados quando fechar e abrir o programa de novo.
Quando fecho e reabro o programa os valores estão voltando a ser: loginmySQL = “root” / senhamySQL = “” e quero que sejam iniciados já com os valores que o usuário deixou anteriormente.

Como fazer isso?

Obs.: Não posso usar o banco de dados pq esses atributos são justamente login e senha de acesso ao banco de dados, entenderam??

Obrigado


É, eu tinha justamente pensado em arquivo TXT mas tava tentando achar algo mais seguro (pro usuário não abrir la e ve a senha e login).
Enfim… acabei utilizando um txt mesmo pra gravar os dados!

Bom, você precisa dar uma olhada em algum material de manipulação de memória durante a execução de um programa. Acontece basicamente que as informações são manipuladas em uma memória temporária e perdidas quando o programa é finalizado. Para manter qualquer informação, ela deve ser salva em um repositório permanente (arquivo em seu hd ou um banco de dados, por exemplo). Então você poderá “carregar” essas informações da sua fonte de dados quando restartar seu programa.

Recomendo: http://x22univale.wordpress.com/2011/06/11/java-dicas-manipulacao-de-arquivos/ como uma solução simples.

SEM SALVAR ESSES NOVOS DADOS EM ALGUM LUGAR É PRATICAMENTE IMPOSSÍVEL…

agora mesmo sendo login e senha estes atributos são gravado num banco (numa tabela de usuários…) e ai ao entrar valida pra ver se está certo!

[quote=SandroSoftwares]SEM SALVAR ESSES NOVOS DADOS EM ALGUM LUGAR É PRATICAMENTE IMPOSSÍVEL…

agora mesmo sendo login e senha estes atributos são gravado num banco (numa tabela de usuários…) e ai ao entrar valida pra ver se está certo!

[/quote]

Sim, mas esses atributos são usados como dados para fazer login no mysql através de uma conexão JDBC. Como que vou guardar no banco sendo que preciso de login e senha para acessar o banco e consultá-los?
Não tem como porq esses dados são justamente para ‘entrar/acessar’ o banco.

[quote=dougfane]Bom, você precisa dar uma olhada em algum material de manipulação de memória durante a execução de um programa. Acontece basicamente que as informações são manipuladas em uma memória temporária e perdidas quando o programa é finalizado. Para manter qualquer informação, ela deve ser salva em um repositório permanente (arquivo em seu hd ou um banco de dados, por exemplo). Então você poderá “carregar” essas informações da sua fonte de dados quando restartar seu programa.

Recomendo: http://x22univale.wordpress.com/2011/06/11/java-dicas-manipulacao-de-arquivos/ como uma solução simples.[/quote]

Então, estava justamente pensando em gravar em um arquivo TXT, mas isso fica muito estranho. Se um cara vai lá e abre o TXT ele ve o login e senha do mysql!!! Entende!!!.
Tem algum arquivo tipo de arquivo que seja meio que criptografado? Assim ficaria visível somente ao programa e ao abrir ‘por fora’ não seja possível ver ou entender o conteúdo.

[quote=wellingtonfoz][quote=SandroSoftwares]SEM SALVAR ESSES NOVOS DADOS EM ALGUM LUGAR É PRATICAMENTE IMPOSSÍVEL…

agora mesmo sendo login e senha estes atributos são gravado num banco (numa tabela de usuários…) e ai ao entrar valida pra ver se está certo!

[/quote]

Sim, mas esses atributos são usados como dados para fazer login no mysql através de uma conexão JDBC. Como que vou guardar no banco sendo que preciso de login e senha para acessar o banco e consultá-los?
Não tem como porq esses dados são justamente para ‘entrar/acessar’ o banco.[/quote]

Acontece que o MySQL possui níveis de acesso para usuários. Um deles é o superusuário root. Esse cara pode fazer qualquer coisa no banco. O que você tem que fazer é criar outro usuário com as devidas permissões em vez de permitir que seu aplicativo cliente acesse seu banco como root.

Recomendo: http://dev.mysql.com/doc/refman/5.5/en/adding-users.html

EDIT: Uma idéia pra resolver seu problema é criar níveis de acesso no seu programa, exemplo:

-Usuário inicia programa;
-Loga como usuário comum;
-Solicita alteração senha;
-Loga como root no banco;
-Altera tabela “mysql.user” (padrao do mysql); Exemplo:

UPDATE mysql.user SET Password=PASSWORD('nova_senha') WHERE User='usuario';

-Encerra sessão de root.

wellingtonfoz

Não sei se é o mais correto, mas eu sempre deixo o usuário padrão para conexão como root

o que eu faço pra controlar acesso?

eu crio no meu aplicativo uma tabela usuários e cadastro os meus usuários do meu software dentro desta tabela.

Logo ao entrar ele entra com o root mas só vai alterar/adicionar algo no meu banco se o login na minha tabela de usuários conferir!

Pra começar, recomendo http://x22univale.wordpress.com/2010/11/28/mysql-workbench-do-que-mais-voce-precisa/

Criando usuários e definindo permissões (exemplo):

CREATE USER 'usuario' IDENTIFIED BY 'senha'; GRANT ALL PRIVILEGES ON *.* TO 'usuario' WITH GRANT OPTION;
Nesse caso, “usuario” terá permissão pra fazer qualquer coisa no banco assim como root.

Mas se você prefere realmente usar “root” no seu cliente, apenas implemente:

UPDATE mysql.user SET Password=PASSWORD('nova_senha') WHERE User='root'; FLUSH PRIVILEGES;

O detalhe é que seu programa não logará automaticamente quando iniciado. Se é isso que você quer, então apenas defina um valor default para login/senha no root. Afinal, se o login é automático, qual a necessidade de se criar/editar usuário/senha de acesso?

[quote=dougfane]Pra começar, recomendo http://x22univale.wordpress.com/2010/11/28/mysql-workbench-do-que-mais-voce-precisa/

Criando usuários e definindo permissões (exemplo):

CREATE USER 'usuario' IDENTIFIED BY 'senha'; GRANT ALL PRIVILEGES ON *.* TO 'usuario' WITH GRANT OPTION;
Nesse caso, “usuario” terá permissão pra fazer qualquer coisa no banco assim como root.

Mas se você prefere realmente usar “root” no seu cliente, apenas implemente:

UPDATE mysql.user SET Password=PASSWORD('nova_senha') WHERE User='root'; FLUSH PRIVILEGES;

O detalhe é que seu programa não logará automaticamente quando iniciado. Se é isso que você quer, então apenas defina um valor default para login/senha no root. Afinal, se o login é automático, qual a necessidade de se criar/editar usuário/senha de acesso?[/quote]

Então kara… mas pra fazer esse CREATE USER ou UPDATE q seja… eu tenho que estar logado obrigatóriamente, aí q está o problema.
Sei que existe um root, mas a senha não é padrão… é definida pelo usuário na instalação do mysql… por isso o problema.
Não tem como eu logar como root sem saber a senha… =(

Bom, não tem como VOCÊ logar, mas tem como o USUÁRIO do seu aplicativo logar, afinal ele tem que saber qual senha definiu na instalação. É só implementar uma tela de login no seu programa.

Continuando, acho que sua confusão é exatamente nisso. Essa tela de login não vai consultar no banco se login/senha estão corretos, e sim vai montar sua string de conexão com o banco.