Dúvidas sobre a estruturação de usuários e logins no programa. Qualquer informação será útil

Olá Pessoal tudo bem? meu nome é Rafael eu estou cursando escola técnica de informática e estou fazendo um pequeno programa para um gerenciamento de um pequeno mercado aonde vai ter um pequeno gerenciamento de negócios mas eu estou com algumas dúvidas .
Na tela inicial do programa logo após a Splash irá solicitar o nome de usuário e senha do funcionário que irá utilizar o computador naquele momento , eu estou utilizando o banco de dados MySQL, o programa por enquanto está utilizando como login e senha o usuário root do MySQL . A minha dúvida principal sobre isso é ,de qual forma eu necessito fazer o gerenciamentos desse tipo de informação , por exemplo. quando for criar um novo usuário ,no momento que for cadastrar um novo funcionário , eu armazeno a senha e o usuário em colunas, na tabela do funcionário e verifico depois se a senha na hora de logar é a mesma que está na tabela ou adiciono o funcionário normalmente na tabela e a senha e usuário eu apenas crio um novo usuário no MySQL… bom eu acho que minha pergunta está meio confusa mas por favor, qualquer coisa que puderem me mandar eu ficarei muito agradecido. Outra coisa para que eu possa fazer a criação de um novo usuário no MySQL , com java utilizando aquela base 'DAO" acho que é assim…) é possível eu criar utilizando o “preparestatement” com o código MySQL em uma String mesmo ?

O ideal é armazenar o login do usuário na tabela, e um hash da senha com SALT.
Leia: http://stackoverflow.com/questions/2969787/hashing-and-salting-values

Sobre os usuários do MySQL em si, geralmente cria-se apenas um para o banco de dados. Preferencialmente, um que não seja root, e que tenha acesso somente a escrita/leitura das tabelas, não a criação/remoção.
Outra prática comum é criar também um usuário para quem só acessa para leitura.

Finalmente, abra tópicos de persistência no fórum de persistência. Nem tudo é Java Básico (não sei se você percebeu, mas a maior parte das suas dúvidas, nem sequer envolvem o Java).

Muito obrigado ViniGodoy essa dica de Hash e Salt vai me ajudar o jeito de logar no sistema está funcionando mas não está utilizando esse hash nem Salt irei estudar como implementar …

Imagino que o jeito mais facil é usar um HASH (como MD5 ou SHA) guardado no campo senha da sua tabela de funcionários . O java tem funções para isto.

1-
Na hora de fazer o INSERT/UPDATE no sua tabela você cadastra os usuários usando uma função hash como a do exemplo abaixo

INSERT into funcionarios (nome, login, senha ) values (:nome,:login,:senha )

No caso da senha você seta o parâmetro com Hashs.getSHA256(“senhadousuario”);

2- Na hora de fazer login, você pega o valor do POST ou do formulário em que o usuário entra com o login e senha:

SELECT * FROM funcionarios WHERE login = :login AND senha = :senha

Basta usar a mesma função acima Hashs.getSHA256(“senhadoPostdigitada”);

3- Se retornar registros então o usuário digitou a senha correta .

public class Hashs {
	public static String getSHA256(String original) {
		MessageDigest algorithm;
		String senha="??";
		try {
			algorithm = MessageDigest.getInstance("SHA-256");

			byte messageDigest[] = algorithm.digest(original.getBytes("UTF-8"));

			StringBuilder hexString = new StringBuilder();
			for (byte b : messageDigest) {
				hexString.append(String.format("%02X", 0xFF & b));
			}
			senha = hexString.toString();
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return senha;
	}
}

Não vejo como alternativa a utilização da senha dos usuários de administração do banco de dados, para acesso a login de sistema. Não é seguro.

Sem SALT, guardar um HASH serve para… nada. Se é para fazer assim, guarda a senha sem hash para pelo menos facilitar a manutenção.

Um hash sem salt é vulnerável ao ataque de Rainbow Tables:

O link que postei explica a forma realmente segura (até agora) de se guardar uma senha.

Legal, com certeza vale apena a usar salt também, valeu pela dica ViniGodoy.

Só para complementar , achei este video no blog explicando sobre uma maneira de utilizar salt com md5

Esta maneira é aconselhável ViniGodoy?