Veja como criar um usuário público no MySQL que requer uma senha para visualizar um banco de dados, juntamente com explicações e melhores práticas:
1. Conecte -se ao MySQL como root ou usuário administrador Você precisará se conectar ao seu servidor MySQL usando uma conta de usuário com privilégios suficientes para criar usuários e conceder permissões. Normalmente, este é o usuário `root` ou outro usuário administrativo.
`` `BASH
Mysql -u Root -p
`` `
Digite a senha root quando solicitado.
2. Crie o usuário Use a instrução `Create User` para criar o usuário. É uma prática recomendada especificar o host do qual o usuário pode se conectar. Se você deseja que o usuário se conecte de qualquer host, use `%`.
Tenha muito cuidado ao usar `%'para contas sensíveis! Para uma abordagem mais segura, restrinja o usuário a se conectar apenas de endereços IP específicos ou nomes de host.
`` `SQL
Criar usuário 'public_user'@'%' identificado por 'your_strong_password';
`` `
*
`'public_user'@'%'` :Isso define o nome de usuário (`public_user`) e o host (`%`significa qualquer host). Substitua `your_strong_password` por uma senha forte e exclusiva.
*
`identificado por 'your_strong_password'` :Isso define a senha para o usuário. Use uma senha forte longa, complexa e inclui uma mistura de maiúsculas e letras minúsculas, números e símbolos. Considere usar um gerenciador de senhas para gerar e armazenar suas senhas com segurança.
Nota de segurança importante: O uso de `'%'` como host permite que o usuário se conecte de * qualquer endereço IP *. Isso pode ser um risco de segurança. Se possível, restrinja o usuário a um endereço IP específico ou intervalo de endereços IP. Por exemplo:
`` `SQL
Criar usuário 'public_user'@'192.168.1.100' identificado por 'your_strong_password'; - Aguarde apenas do IP 192.168.1.100
Criar usuário 'public_user'@'192.168.1.%' identificado por 'your_strong_password'; - Permitir da sub-rede 192.168.1.x
`` `
3. Conceda privilégios somente leitura para o banco de dados Use a instrução `Grant` para conceder aos privilégios somente leitura do usuário no banco de dados desejado.
`` `SQL
Grant Selecione em seu_database.* Para 'public_user'@'%';
`` `
*
`Grant Select` :Isso especifica que o usuário terá apenas o privilégio `select`, que lhes permite ler dados. Eles * não serão capazes de inserir, atualizar, excluir ou alterar a estrutura do banco de dados.
*
`em seu_database.*` :Isso especifica o banco de dados (`your_database`) e que o privilégio se aplica a todas as tabelas nesse banco de dados (`.*`). Substitua `your_database` pelo nome real do seu banco de dados.
*
`to 'public_user'@'%'` :Isso especifica o usuário a quem o privilégio é concedido. Verifique se isso corresponde ao usuário que você criou na etapa 2.
4. Privilégios de descarga Após conceder privilégios, é essencial lavar as tabelas de privilégio para garantir que as mudanças entrem em vigor imediatamente.
`` `SQL
Privilégios descarregados;
`` `
5. Teste o usuário Faça logon da conta raiz ou administrador e faça login usando a conta 'public_user' recém -criada.
`` `BASH
mysql -u public_user -p -h your_mysql_server_address
`` `
Substitua `your_mysql_server_address` pelo endereço real do seu servidor MySQL. Se você estiver se conectando da mesma máquina, geralmente pode usar o `localhost '.
Digite a senha definida para `public_user` quando solicitado.
Depois de conectado, tente selecionar dados do banco de dados:
`` `SQL
Use seu_database;
Selecione * do your_table;
`` `
Se a instrução `select` funcionar, o usuário recebeu acesso somente leitura. Experimente uma operação que requer outros privilégios, como `insert`,` update`, `Delete` ou` Create Table`. Eles devem falhar com um erro de "permissão negado".
Exemplo completo: `` `SQL
-Conecte -se como raiz:mysql -u root -p
- Crie o usuário (substitua por uma senha forte!)
Crie o usuário 'public_user'@'%' identificado por 'SuperSecretPassword123!';
-Conceda acesso somente leitura ao banco de dados 'MyDatabase'
Grant Selecione no myDatabase.* Para 'public_user'@'%';
- Atualizar privilégios
Privilégios descarregados;
- Saia da sessão raiz
SAÍDA;
- Faça login como o novo usuário (na linha de comando):
-mysql -u public_user -p -h your_mysql_server_address
- Teste as permissões:
Use mydatabase;
Selecione * dos clientes; - deve funcionar
Inserir em clientes (nome) valores ('novo cliente'); - deve falhar
- Saia da sessão public_user
SAÍDA;
`` `
Considerações importantes e práticas recomendadas: *
Menos privilégio: Conceder apenas os privilégios necessários. Evite conceder privilégios mais amplos do que o necessário. Por exemplo, se o usuário precisar ler apenas uma tabela específica, conceda `selecione` apenas nessa tabela, não o banco de dados inteiro.
*
Restrição do host: Limite os hosts dos quais o usuário pode se conectar. Não use `'%' ', a menos que seja absolutamente necessário e entenda as implicações de segurança.
*
Gerenciamento de senha: Aplicar políticas de senha fortes e girar regularmente senhas. Use um gerenciador de senhas.
*
Logging de auditoria: Ative o log de auditoria no seu servidor MySQL para rastrear a atividade do usuário, incluindo logins, consultas e outras operações. Isso pode ajudá -lo a detectar e investigar incidentes de segurança.
*
auditorias de segurança regulares: Revise regularmente sua configuração, contas de usuário e privilégios do MYSQL para identificar e abordar possíveis vulnerabilidades de segurança.
*
Criptografia: Use criptografia para proteger os dados em repouso e em trânsito. Ativar SSL para conexões do cliente.
*
firewall: Configure seu firewall para permitir apenas o tráfego necessário para o seu servidor MySQL.
* Monitoramento
: Monitore seu servidor MySQL quanto a problemas de desempenho e ameaças à segurança.
*
Design de banco de dados: Projete seu banco de dados com segurança em mente. Use tipos e restrições de dados apropriados para evitar ataques de corrupção e injeção de dados. Considere usar declarações preparadas para evitar a injeção de SQL.
*
Evite expor diretamente à Internet: Na maioria dos casos, você não deve * expor diretamente seu banco de dados MySQL à Internet pública. Em vez disso, use um servidor de aplicativos (por exemplo, um servidor da web executando PHP, Python, Node.js, etc.) para lidar com solicitações de clientes e interagir com o banco de dados em nome do usuário. Isso permite que você implemente controles mais rigorosos de segurança e proteja o banco de dados de ataques diretos. Isso é crucial para impedir o acesso não autorizado e violações de dados.
*
Nenhuma exposição direta ao usuário final: Nunca permita que o usuário final insira diretamente seu banco de dados, em vez disso, use um site.
Seguindo essas etapas e práticas recomendadas, você pode criar um usuário público que requer uma senha para visualizar dados no MySQL, mantendo um nível razoável de segurança. Lembre -se de adaptar essas instruções aos seus requisitos específicos de ambiente e segurança. Sempre priorize a segurança e revise regularmente sua configuração para garantir que ela permaneça eficaz.