Veja como criar um usuário público no MySQL com autenticação de senha, especificamente para acesso somente leitura a um banco de dados:
1. Conecte -se ao MySQL como um usuário privilegiado: Primeiro, você precisa se conectar ao seu servidor MySQL como usuário com privilégios administrativos (como `root`). Use o cliente MySQL:
`` `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 novo usuário. Substitua `'public_user' e` 'your_password' 'pelo nome de usuário e senha desejados. A cláusula `identificada por 'define a senha do usuário. O `%` significa de qualquer host.
`` `SQL
Crie usuário 'public_user'@'%' identificado por 'your_password';
`` `
Nota de segurança importante: O uso de `'%'` permite que o usuário se conecte de * qualquer host *. Isso geralmente é * não * uma boa ideia por razões de segurança. Se você souber que o usuário estará conectando apenas a partir de um endereço IP específico ou nome do host, substitua `'%'` com esse endereço (por exemplo, `'public_user'@'192.168.1.100' 'ou' 'public_user'@'yourDomain.com'). Por exemplo:
`` `SQL
Crie o usuário 'public_user'@'192.168.1.100' identificado por 'your_password';
`` `
Isso permitiria apenas ao usuário se conectar do endereço IP `192.168.1.100`.
3. Conceda privilégios somente leitura: Use a instrução `Grant` para fornecer ao usuário acesso somente leitura ao banco de dados específico. Substitua `your_database` pelo nome do banco de dados ao qual deseja conceder acesso.
`` `SQL
Grant Selecione em seu_database.* Para 'public_user'@'%';
`` `
* `Select`:permite que o usuário leia dados das tabelas no banco de dados.
* `your_database.*`:especifica que o privilégio se aplica a todas as tabelas em `your_database`.
* `Para 'public_user'@'%'`:especifica o usuário e o host para o qual o privilégio é concedido.
4. Privilégios de descarga: Depois de conceder privilégios, você precisa liberar as tabelas de privilégio para fazer as alterações entrarem em vigor.
`` `SQL
Privilégios descarregados;
`` `
5. Saia mysql: `` `SQL
saída;
`` `
Exemplo completo: `` `BASH
MySQL -u Root -p # Connect como root
Digite sua senha root quando solicitado
Crie o usuário 'public_user'@'%' identificado por 'mySecurePassword123!';
Grant Selecione em seu_database.* Para 'public_user'@'%';
Privilégios descarregados;
saída;
`` `
Explicação e considerações importantes: *
`Criar usuário`: Cria uma nova conta de usuário do MySQL.
*
`concessis ': Atribui permissões específicas (privilégios) a um usuário.
*
`Flush Privileges`: Recarregue as tabelas de concessão. Isso é * essencial * depois de fazer alterações nos privilégios do usuário; Caso contrário, as alterações podem não entrar em vigor imediatamente.
*
`identificado por`: Define a senha do usuário.
Escolha uma senha forte! *
Práticas recomendadas de segurança: *
Limite o acesso do host: Como mencionado, evite usar `'%'` para o host, se possível. Restringir o usuário a conectar -se apenas a endereços IP conhecidos e confiáveis.
*
Princípio do menor privilégio: Conceda apenas os privilégios mínimos que o usuário precisa. Nesse caso, `select` é suficiente para acesso somente leitura. Evite conceder 'todos os privilégios', a menos que seja absolutamente necessário.
*
Complexidade da senha: Aplicar políticas de senha fortes. Use uma mistura de letras, números e símbolos superiores e minúsculos. Considere usar o plug -in de validação de senha do MySQL para aplicação de senha mais forte.
*
ssl/tls: Para ambientes de produção, sempre criptografa as conexões entre o cliente e o servidor MySQL usando SSL/TLS para proteger a senha e os dados transmitidos pela rede.
*
Privilégios alternativos: Em vez de conceder `selecione` em todo o banco de dados (` your_database.*`), Você pode conceder` selecione` apenas em tabelas específicas:
`` `SQL
Grant Selecione em seu_database.table1 para 'public_user'@'%';
Grant Selecione em seu_database.table2 para 'public_user'@'%';
`` `
Isso é ainda mais seguro, pois limita o acesso apenas às tabelas necessárias.
*
Auditoria: Considere ativar o log de auditoria do MySQL para rastrear quem está acessando o banco de dados e quais consultas elas estão executando.
Conectando -se com o novo usuário: Para conectar usando o novo usuário:
`` `BASH
mysql -u public_user -p -h your_mysql_host -d your_database
`` `
* `-U Public_User`:especifica o nome de usuário.
* `-p`:solicita a senha.
* `-H Your_mysql_host`:especifica o nome do host ou o endereço IP do seu servidor MySQL. Se conectar -se da mesma máquina, você pode omitir isso ou usar `localhost` ou` 127.0.0.1`.
* `-D your_database`:especifica o banco de dados para se conectar.
Depois de executar este comando, você será solicitado a inserir a senha do `public_user`.
Seguindo estas etapas e considerando as recomendações de segurança, você pode criar um usuário público com acesso somente leitura ao seu banco de dados MySQL de maneira segura e controlada. Sempre priorize a segurança ao conceder acesso aos seus dados.