Ao usar o MySQL, os problemas de segurança não podem ser ignorados. A seguir estão 23 notas solicitadas pelo MySQL:
1. Se a conexão entre o cliente e o servidor precisar se estender e passar por uma rede não confiável, então você precisará usar um túnel SSH para criptografar a comunicação da conexão.
2. Use a instrução set password para alterar a senha do usuário em três etapas, primeiro faça login no sistema de banco de dados com "mysql -u root" e depois "mysql> update mysql.user set password=password('newpwd')" e, finalmente, executar os privilégios "flush"" servirá.
3. Os ataques contra os quais é necessário proteger-se incluem anti-espionagem, adulteração, repetição, negação de serviço, etc., que não envolvem disponibilidade e tolerância a falhas. Todas as conexões, consultas e outras operações são concluídas usando medidas de segurança baseadas em ACL (lista de controle de acesso). Também existe algum suporte para conexões SSL.
4. Qualquer outro usuário, exceto o usuário root, não tem permissão para acessar a tabela de usuários no banco de dados principal do mysql,
uma vez que a senha do usuário criptografada armazenada na tabela de usuários vaza, outros podem usar o banco de dados correspondente com o nome de usuário/senha à vontade; . ;
5. Use instruções grant e revoke para realizar o controle de acesso do usuário
6. Não use senhas de texto simples,mas
use funções hash unidirecionais como md5() e sha1() para definir senhas;
nos caracteres do dicionário como senha
8. Use um firewall para remover 50% dos perigos externos e deixe o sistema de banco de dados funcionar atrás do firewall ou coloque-o na área DMZ
9. Use o nmap para verificar a porta 3306 da Internet
;, ou use telnet server_host O teste do método 3306 não pode permitir acesso à porta TCP 3306 do servidor de banco de dados de uma rede não confiável, portanto, configurações precisam ser feitas no firewall ou roteador
10. Para evitar que parâmetros ilegais sejam transmitidos maliciosamente
;, como where ID=234, outros Mas inserir where ID=234 OR 1=1 faz com que todos sejam exibidos, então use '' ou "" para usar strings no formulário da web e adicione %22 ao URL dinâmico para representar aspas duplas, %23 para representar o sinal de cerquilha e %27 Representa aspas simples, é muito perigoso passar valores não verificados para o banco de dados mysql
11.
Verifique o tamanho ao passar dados para o mysql;
para se conectar ao banco de dados deve usar contas de usuário gerais e abrir apenas algumas necessárias. As permissões são dadas ao usuário
13. Usar funções específicas de 'caractere de escape' em várias interfaces de programação (C C++ PHP Perl Java JDBC, etc.);
ao usar o banco de dados mysql na Internet, certifique-se de transmitir menos dados de texto simples e usar SSL e SSH. Os dados criptografados são transmitidos
14. Aprenda a usar ferramentas tcpdump e strings para verificar a segurança dos dados transmitidos, como tcpdump -l; -i eth0 -w -src ou strings da porta 3306 dst. Inicie o serviço de banco de dados mysql como um usuário comum
15. Não use o símbolo de link para a tabela, selecione o parâmetro --skip-symbolic-links
16. Certifique-se de que apenas o usuário que inicia o serviço de banco de dados esteja no diretório mysql; pode ler e ler arquivos.
17. Permissões de processo ou super não podem ser concedidas a usuários não administrativos. A lista de processos mysqladmin pode listar o texto da consulta atualmente executada; o status dos parâmetros operacionais do servidor e bancos de dados de cópia e replicação de controle. Servidor
18. Permissões de arquivo não são concedidas a usuários que não sejam administradores para evitar o problema de carregar dados '/etc/passwd' na tabela e depois usar select para exibir. it;
19.
Se você não confia nos serviços da empresa de serviços DNS, você pode definir apenas endereços IP numéricos na tabela de permissão de nomes;
uma conta especificada;
21. A instrução grant também suporta opções de controle de recursos
22. Inicie a opção de segurança do processo de serviço mysqld, --local-infile=0 ou 1. Se for 0, o programa cliente não pode usar carga local; data.Um exemplo de grant grant insert(user) em mysql.user para 'user_name'@'host_name' ; se estiver usando - O sistema skip-grant-tables não implementará nenhum controle de acesso para o acesso de qualquer usuário, mas você pode usar mysqladmin flush-privileges ou mysqladmin reload para ativar o controle de acesso por padrão, a instrução show databases é aberta a todos os usuários e você pode usar --skip-show-databases para desligá-la;
23. Ao encontrar o erro Erro 1045 (28000) Acesso negado para o usuário 'root'@'localhost' (usando senha:NO), você precisa redefinir a senha. O método específico é: primeiro comece com --skip-grant. -tables parâmetro mysqld, então execute mysql -u root mysql,mysql>update user set password=password('newpassword') where user='root';mysql>Flush privilégios;, e finalmente reinicie o mysql.