MySQL está entre os gerenciadores de banco de dados mais populares do mundo. Ele contém muitos recursos que o tornam confiável, eficiente e robusto. Sua confiabilidade máxima é alcançada se for usada corretamente. Criar usuários com permissões limitadas no banco de dados é uma das maneiras mais fáceis e confiáveis de aumentar a segurança do MySQL.
MySQL cria usuário
Ao instalar o MySQL, o usuário root (administrador do MySQL) é o primeiro usuário a ser criado. O usuário root tem permissão para fazer tudo e qualquer coisa no banco de dados MySQL. É conveniente que outras pessoas acessem seu banco de dados usando essa conta.
Usuários maliciosos podem tentar fazer login como usuários root para roubar as informações hospedadas ou destruir o serviço junto com os dados. Portanto, o administrador do sistema deve criar usuários com permissões específicas no banco de dados. Isso garante que, se a segurança desse usuário for comprometida, o impacto será mínimo ou gerenciável.
A instrução MySQL Create User permite que você crie uma nova conta de usuário no servidor de banco de dados. Ele fornece propriedades de gerenciamento de autenticação, limite de recursos, função e senha para as novas contas. A declaração também nos permite controlar as contas que devem ser bloqueadas ou desbloqueadas.
Para criar um usuário, é necessário ter um privilégio global (ser um usuário root) da instrução “CREATE USER” ou o privilégio INSERT para o esquema do sistema MySQL. Um erro aparece se você tentar criar um usuário que já existe, mas se você usar a cláusula “IF NOT EXISTS”, a instrução fornecerá um aviso para cada usuário nomeado que já existe em vez de uma mensagem de erro.
Para criar um usuário não root e conceder a ele privilégios específicos para acessar e modificar o banco de dados, usamos a seguinte sintaxe:
CREATE USER IF NOT EXISTS 'fosslinux'@'localhost' IDENTIFIED BY 'foss12345';
O account_name tem duas partes; o nome de usuário e o nome do host, separados pelo símbolo @. O nome de usuário é o nome do usuário, enquanto o nome do host é o nome do host a partir do qual o usuário pode se conectar ao servidor de banco de dados.
username@hostname
O nome do host é opcional. Se o nome do host não for fornecido, o usuário poderá se conectar de qualquer host no servidor. Um nome de conta de usuário sem um nome de host pode ser escrito como username@%
CREATE USER IF NOT EXISTS 'fosslinux@%' IDENTIFIED BY 'foss12345';
Observe que a instrução create user cria um novo usuário com acesso total. para dar privilégios ao usuário, use a instrução GRANT
Use as etapas a seguir para criar um novo usuário no banco de dados MySQL:
1. Usando a ferramenta cliente MySQL, abra o servidor MySQL
2. Digite a senha e pressione Enter.
3. Crie um novo usuário usando o seguinte comando
create user 'foss'@'localhost' identified by 'foss12345';
4. Use o seguinte comando para mostrar os usuários no servidor MySQL
select user from mysql.user;
A partir da saída mostrada, o usuário ‘foss’ foi criado com sucesso.
5. Agora use a cláusula IF NOT EXISTS com a instrução CREATE USER executando o seguinte comando:
Concedendo privilégios ao novo usuário do MySQL
Alguns dos privilégios mais comuns fornecidos pelo servidor MySQL para um novo usuário incluem;
1. TODOS OS PRIVILÉGIOS: permite todos os privilégios para uma nova conta de usuário
2. CRIAR: permite que a conta de usuário crie bancos de dados e tabelas
3. QUEDA: permite que a conta do usuário elimine bancos de dados e tabelas
4. EXCLUIR: permite que a conta de usuário exclua linhas de uma tabela específica
5. INSERIR: permite que a conta de usuário insira linhas em uma tabela específica
6. SELECIONAR: permite que a conta de usuário leia um banco de dados
7. ATUALIZAÇÃO: permite que uma conta de usuário atualize as linhas da tabela
Execute o seguinte comando para conceder todos os privilégios a um usuário
GRANT ALL PRIVILEGES ON *.* TO 'foss'@'localhost';
Execute o seguinte comando para dar privilégios específicos a um usuário recém-criado,
GRANT CREATE, SELECT, INSERT ON *.* TO 'foss'@'localhost';
Para liberar todos os privilégios atribuídos a um usuário, execute o comando abaixo.
FLUSH PRIVILEGES;
Para ver os privilégios existentes atribuídos a um usuário, execute o seguinte comando.
SHOW GRANTS FOR 'foss'@'localhost';
Descartar usuário do MySQL
A instrução MySQL Drop User permite que você remova uma ou mais contas de usuário e seus privilégios do servidor de banco de dados. Se a conta do usuário não existir no servidor de banco de dados, ele retornará um erro.
Para usar a instrução Drop User, você precisa ter um privilégio global ou o privilégio DELETE para o esquema do sistema MySQL.
A sintaxe para excluir inteiramente as contas de usuário do servidor de banco de dados é a seguinte:
DROP USER 'foss'@'localhost';
Observação: O nome da conta no exemplo acima é identificado como username@hostname. O nome de usuário é o nome da conta que você deseja excluir do servidor de banco de dados e o nome do host é o nome do servidor da conta de usuário. por exemplo, ‘foss@localhost’. foss é o nome de usuário, enquanto localhost é o nome do host.
A seguir estão as etapas a serem seguidas ao excluir um usuário existente do banco de dados do servidor MySQL;
1. Usando a ferramenta cliente MySQL, abra o servidor MySQL
2. Digite a senha da conta e pressione Enter
3. Para descartar uma conta de usuário, execute o seguinte comando
DROP USER 'fosslinux'@'localhost';
4. Execute o seguinte comando para mostrar aos usuários
select user from mysql.user;
Você obterá uma saída na qual o nome de usuário fosslinux não estará presente, conforme mostrado abaixo:
5. O usuário Drop também pode ser usado para remover mais de uma conta de usuário de uma vez. Para fazer isso, você separa os nomes_da_conta usando vírgulas.
Observação: Como já eliminamos os usuários, vamos criar dois usuários usando os conceitos create user (fosslinuxtuts e fosslinux@%). Depois disso, executaremos o comando na etapa 4 para mostrar os usuários existentes conforme mostrado abaixo:
Agora solte os dois usuários simultaneamente usando o comando abaixo:Execute o seguinte comando para soltar os dois usuários:
DROP USER 'fosslinuxtuts'@'localhost', 'fosslinux@%' ;
Observe que a instrução DROP não pode fechar nenhuma sessão de usuário aberta automaticamente. Quando a instrução DROP é executada enquanto uma sessão de conta de usuário está ativa, o comando não a afeta até que sua sessão seja fechada. A conta do usuário é descartada apenas quando a sessão é encerrada e a próxima tentativa do usuário não poderá fazer login novamente.
MySQL mostra usuários/lista todos os usuários
Para gerenciar um banco de dados no MySQL, você precisa ver a lista de todas as contas de usuários em um banco de dados. As pessoas assumem que existe um comando SHOW USERS semelhante a SHOW DATABASE ou SHOW TABLES para exibir a lista de todos os usuários disponíveis no servidor de banco de dados. Infelizmente, o servidor MySQL não possui um comando SHOW USERS para exibir uma lista de todos os usuários no servidor MySQL. Então, em vez disso, usamos a seguinte consulta para ver a lista de todos os usuários no servidor de banco de dados:
Select user from mysql.user;
Após executar o comando, você obterá os dados do usuário da tabela de usuários do servidor de banco de dados MySQL.
Observação: Neste exemplo, usaremos o banco de dados MySQL. Selecione o banco de dados executando o comando abaixo e, em seguida, use a instrução select from para verificar os usuários existentes, conforme mostrado na imagem abaixo:
use mysql;
SELECT user FROM user;
Se você quiser ver mais informações sobre a tabela do usuário, execute o seguinte comando:
DESC user;
O comando fornecerá a seguinte saída que lista todas as colunas disponíveis do banco de dados mysql.user:
Para obter informações selecionadas como nome de host, status de expiração de senha e bloqueio de conta, execute a seguinte consulta:
SELECT user, host, account_locked, password_expired FROM user;
A seguinte saída aparecerá após a execução bem-sucedida da consulta:
Mostrar usuário atual
Você pode obter informações do usuário atual usando a função user() ou current_user() conforme mostrado abaixo:
Select user();
OU
Select current_user();
A saída a seguir aparecerá após a execução bem-sucedida de qualquer um dos comandos acima.
Mostrar usuário conectado no momento
Você pode ver um usuário que está atualmente conectado ao servidor de banco de dados usando o seguinte comando no servidor MySQL:
SELECT user, host, db, command FROM information_schema.processlist;
Os comandos acima geram uma tela semelhante à mostrada abaixo:
Como alterar a senha do usuário MySQL
Os registros de usuário MySQL contêm as informações de login, privilégios de conta e informações de host para a conta MySQL para acessar e gerenciar o banco de dados. As informações de login incluem o nome de usuário e a senha. Portanto, pode ser necessário alterar a senha do usuário no banco de dados MySQL.
Para alterar a senha de qualquer conta de usuário, lembre-se de ter em mente as seguintes informações:
- Detalhes da conta de usuário a ser alterada
- O aplicativo é usado pela conta de usuário cuja senha deve ser alterada. Se a senha da conta do usuário tiver sido redefinida sem alterar uma string de conexão do aplicativo, o aplicativo não poderá se conectar ao servidor de banco de dados.
O MySQL permite que você altere a senha da conta de usuário de três maneiras diferentes:
- Instrução de ATUALIZAÇÃO
- Instrução SET PASSWORD
- Declaração ALTER USER
Alterando a senha da conta de usuário usando a instrução UPDATE
Após executar a instrução UPDATE, usamos a instrução FLUSH PRIVILEGE para recarregar privilégios da tabela de concessões do banco de dados MySQL.
Suponha que você queira alterar a senha de uma conta de usuário foss que se conecta do localhost com a senha foss12345, execute o seguinte comando:
USE mysql;
UPDATE user SET password=password('kip12345') WHERE user='foss';
FLUSH PRIVILEGES;
A instrução acima não funcionará no MySQL versão 5.7.6 ou superior, pois a tabela de usuários do MySQL contém a coluna de string de autenticação que armazena apenas a senha. Versões superiores têm a coluna de string de autenticação na instrução UPDATE, conforme mostrado na instrução a seguir:
USE mysql;
UPDATE user SET authentication_string = password('foss12345') WHERE user = 'foss';
FLUSH PRIVILEGES;
Observação: Este método funciona apenas com versões mais antigas do MySQL. Portanto, se você tiver versões mais recentes ou mais recentes do MySQL, pule para os outros métodos.
Alterando a senha da conta de usuário usando a instrução SET PASSWORD
Se você quiser alterar a senha de outra conta, precisará ter o privilégio UPDATE. A instrução usa a conta de usuário no seguinte formato:username@localhost
Recarregar privilégios das tabelas rant do banco de dados MySQL usando o FLUSH PRIVILEGES não precisa ser usado. Para alterar a senha da conta de usuário (foss) usando a instrução SET PASSWORD, use a seguinte instrução:
SET PASSWORD FOR 'foss'@'localhost' = PASSWORD('foss12345');
Se você estiver usando o MySQL versão 5.7.6 ou superior, a instrução acima está obsoleta e não funcionará em versões futuras. Em vez disso, use a seguinte instrução;
SET PASSWORD FOR 'foss'@'localhost' = 'foss12345';
Alterando a senha da conta de usuário usando a instrução ALTER USER
O MySQL usa a instrução ALTER USER com a cláusula IDENTIFIED BY. Para fazer isso, você usa a seguinte sintaxe:
ALTER USER 'foss'@'localhost' IDENTIFIED BY 'foss12345';
Pode ser necessário redefinir a senha da conta raiz do MySQL. Para fazer isso, você pode forçar a parada e reiniciar o servidor de banco de dados MySQL sem usar a validação da tabela de concessão.
Conclusão
Este artigo cobriu de forma abrangente todos os aspectos relacionados ao gerenciamento de usuários do MySQL. Acreditamos que é detalhado o suficiente para fornecer soluções para seus problemas. Se você encontrar erros ou dificuldades ao mostrar usuários usando o MySQL, entre em contato através da seção de comentários para obter ajuda. Obrigado por ler.