MySQL é um sistema de gerenciamento de banco de dados relacional de código aberto de plataforma cruzada. É o banco de dados mais econômico e acessível que comumente usamos. Devido ao seu tamanho pequeno, velocidade rápida e baixo custo total de propriedade, especialmente o recurso de código aberto, ele permite aos usuários. para obter os resultados mais práticos É verdade que muitos usuários não sabem muito sobre os princípios de autorização em aplicativos. MySQL é um sistema de gerenciamento de banco de dados relacional de código aberto de plataforma cruzada. É o banco de dados mais econômico e acessível que comumente usamos. Devido ao seu tamanho pequeno, velocidade rápida e baixo custo total de propriedade, especialmente o recurso de código aberto, ele permite aos usuários. para obter os resultados mais práticos É verdade que muitos usuários não sabem muito sobre os princípios de autorização em aplicativos.
Situação de reinicialização do servidor
Quando o mysqld inicia, todo o conteúdo da tabela de permissões é lido na memória e se torna efetivo a partir desse ponto.
Quando aplicado imediatamente pelo servidor
Modificações na tabela de autorização usando GRANT, REVOKE ou SET PASSWORD serão imediatamente percebidas pelo servidor.
Modificação direta do formulário de autorização
Se você modificar as tabelas de permissões manualmente (usando INSERT, UPDATE, etc.), você deverá executar uma instrução FLUSH PRIVILEGES ou executar mysqladmin flush-privileges para informar ao servidor para recarregar as tabelas de permissões, caso contrário suas alterações não terão efeito a menos que você reinicie o servidor.
Impacto nas conexões existentes com os clientes
Quando o servidor percebe que a tabela de autorização foi alterada, as conexões de cliente existentes têm os seguintes efeitos:
·As permissões de tabelas e colunas entram em vigor na próxima solicitação do cliente.
·As alterações nas permissões do banco de dados entrarão em vigor no próximo comando USE db_name.
·Alterações de permissão global e alterações de senha entrarão em vigor na próxima vez que o cliente se conectar.
Princípio de delegação
Não importa o quão cuidadoso você seja, você inevitavelmente deixará brechas ao autorizar usuários. Espero que o conteúdo a seguir possa ajudá-lo.
Somente o usuário root tem o direito de reescrever a tabela de autorização
Não conceda o direito de reescrever a tabela de autorização a outros usuários, exceto o usuário root (é claro, se você puder usar outro usuário para substituir o usuário root para gerenciamento, para aumentar a segurança). Por causa disso, os usuários podem substituir as permissões existentes substituindo a tabela de autorização. Crie brechas de segurança.
Normalmente você não pode cometer esse erro, mas após instalar uma nova distribuição, tabela de autorização inicial. Esta vulnerabilidade existe e você poderá cometer erros se não compreender o conteúdo do formulário de autorização neste momento.
No Unix (Linux), após instalar o MySQL conforme instruções do manual, você deve executar o script mysql_install_db para estabelecer o banco de dados mysql incluindo a tabela de autorização e permissões iniciais. No Windows, execute o programa Setup na distribuição para inicializar o diretório de dados e o banco de dados mysql. Supõe-se que o servidor também esteja em execução.
Quando você instala o MySQL pela primeira vez em sua máquina, as tabelas de autorização no banco de dados mysql são inicializadas assim:
·Você pode se conectar como root do localhost sem especificar uma senha. O usuário root tem todos os direitos (incluindo direitos administrativos) e pode fazer qualquer coisa. (A propósito, o superusuário MySQL e o superusuário Unix têm o mesmo nome e não têm nada a ver um com o outro.)
·O acesso anônimo é concedido a usuários que podem se conectar localmente ao banco de dados denominado test e a qualquer nome de banco de dados começando com test_. Usuários anônimos podem fazer qualquer coisa no banco de dados, mas não têm direitos administrativos.
Geralmente, é recomendado excluir registros de usuários anônimos:
mysql> DELETE FROM usuário WHERE Usuário="";
Indo um passo além, exclua também quaisquer usuários anônimos em outras tabelas de autorização, as tabelas com colunas de usuário são db, tabelas_priv e colunas_priv.
Defina também uma senha para o usuário root.
Sobre configurações de usuário, senha e host
·Use senhas para todos os usuários do MySQL.
Lembre-se, se other_user não tiver uma senha, qualquer pessoa poderá efetuar login como qualquer outra pessoa simplesmente com mysql -u other_user nome_bd. Para aplicativos cliente/servidor, é prática comum o cliente especificar qualquer nome de usuário. Antes de executá-lo, você pode alterar as senhas de todos os usuários, ou apenas a senha root do MySQL, editando o script mysql_install_db, assim:
shell> mysql -u root mysql
mysql> ATUALIZAR usuário SET Senha=SENHA('nova_senha')
-> WHERE usuário='root';
mysql> PRIVILÉGIOS FLUSH;