Quando você instala o serviço de banco de dados MySQL, ele cria uma conta raiz automaticamente. Você pode usá-lo para executar qualquer ação e acessar qualquer dado. Isto pode ser um pesadelo de segurança!

Para manter seu site seguro, é sábio criar contas adicionais que não tenham esses privilégios elevados. Felizmente, existem múltiplas maneiras de criar novos usuários no MySQL.

Neste artigo, nós vamos explorar todas as razões pelas quais você pode querer adicionar mais usuários ao seu banco de dados MySQL. Nós então mostraremos a você como criar essas contas e gerenciar suas permissões para a máxima segurança. Vamos começar!

Uma introdução ao MySQL (e porque você pode querer adicionar novos usuários)

A distribuição oficial do WordPress suporta ambos os mecanismos de banco de dados MySQL e MariaDB. Se você pesou os prós e os contras, você pode ter optado pela última versão do software de gerenciamento de banco de dados MySQL. Em algum momento, você pode querer criar usuários adicionais.

No MySQL, cada conta consiste de um nome de usuário e senha. Ele também especifica o host do cliente ou hosts onde o usuário pode se conectar ao seu servidor MySQL.

Você normalmente criará contas adicionais quando mais pessoas precisarem ter acesso ao seu banco de dados. Enquanto várias pessoas poderiam interagir com o MySQL a partir da mesma conta, compartilhar as credenciais de login é um risco de segurança. Se você detectar qualquer erro ou atividade suspeita dentro do seu banco de dados, então uma conta compartilhada também tornará mais difícil a identificação do culpado.

O MySQL é um sistema baseado em permissões. Ele permite que você controle exatamente a que informação cada usuário tem acesso e as ações que ele pode realizar. Criar múltiplas contas com diferentes permissões é muito mais seguro do que depender de uma única conta com acesso global.

Quando você instala o MySQL, ele automaticamente cria uma única conta ‘root’@’localhost’ de superusuário. Mesmo se você estiver gerenciando o banco de dados sozinho, ainda assim é sábio fazer pelo menos uma conta adicional. Fazer isso garante que você não vai perder o acesso a todo o seu banco de dados só porque você encontra um problema com o ‘root’@’localhost’

Esta conta raiz também tem permissão para acessar todos os seus dados e executar qualquer ação. Mesmo usuários experientes de banco de dados podem causar sérios danos com este nível de controle. Por esta razão, você pode querer criar uma conta de usuário regular que você pode usar para o dia-a-dia do administrador do MySQL. Você pode então reservar ‘root’@’localhost’ para tarefas que requerem privilégios elevados.

Como gerenciar o seu banco de dados MySQL

Quando se trata de gerenciar seu banco de dados MySQL, você tem duas opções. Você pode usar o MySQL Shell, que é uma interface Python, Javascript, ou SQL e um componente do MySQL Server. Esta ferramenta está disponível no Microsoft Windows, Linux e macOS para plataformas de 64 bits.

Alternativamente, você pode usar a ferramenta gratuita phpMyAdmin. Vamos dar uma olhada mais de perto nestas duas opções.

1. Gerencie seu banco de dados a partir do MySQL Shell

Para entrar no prompt do MySQL Shell, abra um Terminal ou Prompt de Comando. Você pode então executar o seguinte comando:

> mysqlsh

Isto abre o MySQL Shell sem se conectar a um servidor. Por padrão, o MySQL Shell é iniciado no modo JavaScript, mas você pode mudar de modo usando o comando sql, py, ou js:

Abrir o MySQL Shell
Abrir o MySQL Shell

No MySQL Shell, as conexões com instâncias do MySQL Server são tratadas por um objeto de sessão. Se o Protocolo X estiver disponível, então você pode usar um objeto de sessão. Note que o Protocolo X requer o Plugin X.

O X Plugin ouve a porta especificada pelo mysqlx_port, que tem como padrão 33060. Você pode criar um objeto Session usando o seguinte:

–mysqlx (–mx)

Por exemplo, você pode estabelecer uma conexão de Protocolo X para uma instância local do MySQL Server ouvindo na porta 33060, usando o seguinte:

shell> mysqlsh –mysqlx -u user -h localhost -P 33060

Se o Protocolo X não estiver disponível, então você pode usar um objeto ClassicSession. Este objeto é destinado a executar SQL contra servidores usando o protocolo clássico MySQL. Para criar um objeto ClassicSession, digite:

–mysql (–mc)

Você pode verificar os resultados de sua tentativa de conexão usando o comando status do MySQL Shell ou o método shell.status(). Por exemplo:

mysql-js []> shell.status()

Para atribuir privilégios via MySQL Shell, você precisará executar seus comandos como um usuário root. Para conseguir isso, digite o seguinte e então forneça sua senha de usuário root do MySQL quando solicitado:

mysql -u root -p

Aqui, o -u indica que o seguinte parâmetro é um nome de usuário, que neste caso é a raiz. Ao invés de exibir a senha em texto simples, nós estamos usando o -p. Isto especifica que a senha não é fornecida e que você precisará inseri-la quando for solicitado. Usar estes parâmetros pode ajudar a manter sua conta root segura.

2. Gerencie seu banco de dados a partir do phpMyAdmin

Se você prefere usar uma Interface Gráfica do Usuário (GUI), talvez consiga gerenciar o banco de dados MySQL via phpMyAdmin. Com as permissões adequadas, essa interface permite que você crie novas contas, visualize e edite permissões e exclua contas que não precisa mais. Você precisará estar logado como root para realizar essas ações.

Você pode baixar essa ferramenta gratuitamente no site do phpMyAdmin.

Exemplo do painel do phpMyAdmin.
Exemplo do painel do phpMyAdmin.

Como criar e gerenciar um usuário MySQL (4 processos chave)

Uma vez conectado ao seu banco de dados, você pode realizar muitas ações diferentes. Aqui estão 4 processos chave para você gerenciar suas contas de usuário MySQL.

1. Crie um novo usuário no servidor de banco de dados

No phpMyAdmin, você pode criar uma conta usando o link Adicionar um novo usuário. Você pode então usar os campos de texto e dropdowns para configurar esta conta:

Neste ponto, você tem a opção de atribuir privilégios globais. Isto garante ao usuário acesso ilimitado a todos os seus bancos de dados e tabelas. Pode ser um risco de segurança, então você só deve dar esses privilégios elevados quando eles forem necessários. Você pode atribuir privilégios específicos ao banco de dados após criar esta conta.

Para criar uma nova conta via MySQL shell, digite o comando CREATE USER. Você também precisará fornecer um nome de usuário e o hostname. Este último é o nome do host a partir do qual o usuário se conecta com o servidor MySQL:

CREATE USER ‘exemplodeusuário’@’localhost’ IDENTIFIED BY ‘password’;

Ao digitar este comando, certifique-se de substituir o usuário de exemplo e o password pelos valores que você deseja atribuir a esta conta. O usuário sempre pode alterar sua senha do MySQL em uma data posterior.

No exemplo acima, estamos colocando o nome da hostname em “localhost”. Portanto, o usuário somente será capaz de se conectar ao servidor MySQL a partir do sistema onde o MySQL Server está rodando.

Você pode querer substituir a palavra localhost pelo endereço do seu servidor. Por exemplo, se este usuário precisa acessar o MySQL de uma máquina com o endereço IP 11.0.0.0, então você executaria o seguinte:

CREATE USER ‘newuser’@’11.0.0.0’ DENTIFIED BY ‘user_password’;

Se você quiser criar um usuário que possa se conectar de qualquer host, você pode incluir a % wildcard no seu comando. Por exemplo:

CREATE USER ‘newuser’@’%’ IDENTIFIED BY ‘user_password’;

Alternativamente, você pode omitir completamente o valor do nome do hostname. Isto terá o mesmo resultado.

2. Atribuir permissões para o MySQL via phpMyAdmin

Por padrão, um novo usuário do MySQL não tem permissão para realizar nenhuma ação. Mesmo se eles entrarem em sua conta, eles não poderão criar nenhuma tabela ou selecionar nenhum dado.

Depois de criar um novo usuário, você normalmente vai querer começar a atribuir a ele algumas permissões. Para manter seu banco de dados seguro, é uma boa idéia dar a cada usuário os privilégios mínimos necessários para completar seu trabalho. Também é sábio rever regularmente as permissões deles e depois revogar quaisquer permissões desnecessárias.

Você pode editar os privilégios de um usuário no painel de Usuários do phpMyAdmin.

Conceder acesso irrestrito pode parecer a opção mais fácil, mas pode colocar em risco o seu banco de dados. A menos que você tenha uma razão específica, você normalmente vai querer evitar dar a qualquer um o domínio livre sobre todo o seu banco de dados.

3. Modificar as permissões de usuários do MySQL Shell

Se você estiver usando o MySQL Shell, você pode visualizar todos os privilégios concedidos a uma conta específica com o comando SHOW GRANTS. Você precisará substituir “username” e “localhost” por informações para a conta que você deseja revisar:

PROJETE SUGESTÕES PARA ‘username’@’localhost’;

Quando você criar uma conta, esta lista estará vazia. Você pode começar a atribuir acesso a diferentes partes do seu banco de dados usando o comando GRANDE:

GRANT type_of_permission ON database_name.table_name TO ‘username’@’localhost’;

Neste comando, nós estamos especificando os privilégios que estamos atribuindo, seguidos pelo banco de dados e tabelas aos quais estas mudanças devem se aplicar. Finalmente, nós estamos fornecendo o nome de usuário e o servidor que receberá os privilégios nomeados. Você encontrará uma lista completa de todos os privilégios disponíveis na documentação oficial do MySQL.

Documentação do MySQL
Documentação do MySQL

Se você quiser conceder acesso a qualquer banco de dados ou tabela, você pode usar um asterisco (*) no lugar do nome do banco de dados ou da tabela. Por exemplo:

GRANT ALL PRIVILEGES ON *. * TO ‘exampleuser’@’localhost’;

Aqui, nós estamos dando permissão ao usuário de exemplo para ler, editar, executar e executar todas as tarefas em todos os bancos de dados e tabelas. Você normalmente vai querer reservar estes privilégios elevados para os administradores.

Às vezes, você pode precisar tirar uma permissão. Por exemplo, talvez você tenha concedido um privilégio por engano, ou o usuário não precise mais dele. Para revogar o acesso, execute o seguinte:

REVOKE type_of_permission ON database_name.table_name FROM ‘username’@’localhost’;

Se você atribuir privilégios usando o comando GRANDE, o MySQL deve notar estas mudanças e aplicá-las automaticamente. Entretanto, ainda é inteligente atualizar os privilégios de um usuário executando o comando FLUSH PRIVILEGES; comando.

4. Remover um usuário do MySQL

Algumas vezes, você pode precisar remover um usuário do seu banco de dados MySQL. Por exemplo, talvez essa pessoa esteja deixando sua organização, ou ela esteja se mudando para outro departamento. Você também pode estar ativamente tentando limitar o número de pessoas que podem acessar seu banco de dados, a fim de aumentar sua segurança.

Se você está trabalhando com o MySQL Shell, você pode excluir uma conta usando o DROP USER statement. Este comando também irá apagar todos os seus privilégios:

GRANT ALL PRIVILEGES ON *. * TO ‘exampleuser’@’localhost’;

Alternativamente, com o phpMyAdmin, encontre a conta que deseja remover na página de Usuários. Você pode então selecionar a caixa de seleção correspondente e escolher se também deseja remover qualquer banco de dados com o mesmo nome.

Quando você estiver feliz em prosseguir, clique em Ir. Esta pessoa agora será excluída do MySQL.

Resumo

O MySQL cria automaticamente uma conta de super usuário ‘root’@’localhost’, mas nunca é uma boa idéia usá-la para tudo. Ao criar vários usuários MySQL, você pode atribuir privilégios diferentes para manter seus dados seguros.

Além disso, você pode garantir que você não perca o acesso ao seu banco de dados porque você está tendo problemas com o ‘root’@’localhost’.

Como proprietário de um website, seu banco de dados é frequentemente o seu bem mais valioso. Em Kinsta, nossa equipe de especialistas experientes em WordPress pode ajudar a manter seu banco de dados em forma de ponta a ponta.

Todos os nossos planos de hospedagem incluem suporte 24 horas por dia! Fazendo parceria com a Kinsta, você sempre terá veteranos do WordPress à mão para ajudar a resolver qualquer problema com o seu banco de dados MySQL.