otimização de segurança MySQL

A, alterar a senha do usuário root, remova senha vazia

B, exclua o banco de dados padrão e de usuário de banco de dados

C, altere o mysql conta de administrador padrão

D, gestão sobre senha

Password é uma gestão de segurança de banco de dados é um fator importante, para não salvar senhas em texto simples no banco de dados. Se o seu computador tem um risco de segurança, *** você pode obter todas as suas senhas e usá-los. Em vez disso, usar MD5 (), SHA1 () ou função hash unidireccional. Não escolha uma senha de um dicionário, não existe um programa especial pode quebrá-las, usar pelo menos oito forte senha de letras, números e símbolos. Quando o código de acesso, utilize as) instrução SQL, senhas built-in função do mysql senha (armazenados criptografados. Por exemplo, um novo usuário se junta a tabela de usuários.

#mysql> inserção em valores de utilizadores (1, palavra-passe (1234), 'teste');

E, usando um utilizador separada para executar msyql

#vi /etc/my.cnf

[Mysqld]

usuário = mysql

F, proibir conexão banco de dados remoto

# Nós /etc/my.cf

O # skip-networking comentários removidos.

L, limitar o número de utilizadores ligados

#vi /etc/my.cnf

[Mysqld]

max_user_connections 2

H, restrições de acesso ao diretório do usuário

# Chown -R root / usr / local / mysql / // diretório mysql à raiz

# Chown -R mysql / usr / permissões / mysql / var // garantir diretório de banco de dados MySQL local usuário pertence

I, protecção histórico de comandos

# Rm .bash_history .mysql_history // Excluir Histórico

# Ln -s / dev / null .bash_history // arquivo de log vai desembolsar em branco

# Ln -s / dev / null .mysql_history // em branco mysql arquivo de log será deixado

J, proibir o acesso a arquivos locais MySQL

Você pode adicionar locais-infile = 0 no my.cnf, ou adicionar parâmetros locais-infile mysql = 0 começo.

# / Usr / local / mysql / bin / mysqld_safe -user = mysql -local-infile = 0 &

K, o controle de acesso do servidor MySQL

L, usando formas chroot para controlar a operação do diretório MySQL

opções de inicialização relacionados à segurança M, Mysqld

-local-infile [= {0 | 1}]

Se -local-infile = 0 iniciando o servidor, o cliente não pode usar LOCAL na declaração LOAD DATA.

-old-passwords

Forçar o servidor a gerar uma nova senha para o curto (pré-4.1) hashes de senha. Quando o servidor deve apoiar o programa de cliente mais antigo, que é útil, a fim de assegurar a compatibilidade.

(Obsoleto) -safe comparência-base de dados

Nas versões anteriores do MySQL, esta opção permite SHOW DATABASE declaração exibe apenas o nome do usuário do banco de dados tem alguns privilégios. No MySQL 5.1, esta opção não é utilizada como o comportamento padrão agora, há um privilégio SHOW DATABASES para cada conta pode ser usado para controlar o acesso ao nome do banco de dados.

-safe-user-create

Se ativado, os usuários não podem criar novos usuários com o comando GRANT, se o usuário tem mysql.user privilégios Inserir tabela. Se você deseja que o usuário tenha licenciamento direitos para criar um novo usuário, você deve ser concedido as seguintes permissões para o usuário:

mysql> GRANT INSERIR (usuário) ON 'user_name' mysql.user para @ 'host_name';

Isso garante que os usuários não podem alterar diretamente a coluna permissões, você deve usar a instrução GRANT para conceder esse privilégio a outros usuários.

-Secure-auth

Ele não permite a identificação da conta antiga senha (pré-4.1).

N, segurança information_schema

Na perspectiva do usuário, INFORMATION_SCHEMA apenas um mecanismo de armazenamento para plug-ins existentes, compilar e instalar o tempo

-disable-informações-schema na linha

O, Muitas conexões

ideias de resolução de problemas:

1, antes de tudo, devemos primeiro considerar o banco de dados MySQL arquivo de parâmetro para dentro, max_connections Este parâmetro correspondente ao valor não está definido muito pequeno, resultando em banco de dados cliente excede o número máximo de conexões de suportar.

A solução correspondente: configurar max_connections globais = 500

2, pode limitar o número de tratamento concorrente seguido InnoDB se innodb_thread_concurrency = 0 (isto não está limitado nome) pode ser alterada para 16 ou 64 para o servidor para ver pressão.

Além de alguns monitor de information_schema lê a tabela abaixo, você pode considerar o fechamento dos seguintes parâmetros:

innodb_stats_on_metadata = 0

definir innodb_stats_on_metadata mundial = 0

P, a partir da cópia mestre sendo determinado tipo

Last_SQL_Errno: 1062 (dados da biblioteca e conflito principal biblioteca)

solução:

Ele pode ser ignorado no erro do banco de dados mestre para garantir a consistência dos dados a partir da premissa. Geralmente usado pt-escravo restart Percona-toolkit é realizada.

A partir da biblioteca faça o seguinte:

[Root @ ZS bin] # ./pt-slave-restart -uroot -proot123

2017-07-20T14: 05: 30 p = ..., u = raiz node4-relay-bin.000002 1506 1062

Depois de abrir parâmetros de preferência read_only a partir da biblioteca, a operação de escrita é proibida a partir da biblioteca.

Last_IO_Errno: (conflito server-id) 1593

Após esse erro, você pode ver de relance as duas máquinas de server-id é o mesmo.

No edifício principal do processo de replicação, queremos ter certeza de que as duas máquinas server-id é único. Aqui, novamente, nomeando de server-id (este último número da porta de serviço + MySQL do endereço IP do servidor).

Solução: server-id conjunto diferente das duas máquinas primários.

Last_SQL_Errno: 1032 (, menos dados a ser dado a partir da biblioteca, quando a actualização da base de dados mestre a partir da biblioteca)

Solução para o problema:

De acordo com a informação dada, podemos chegar a um número de registo de erros e posição e, em seguida, ser capaz de encontrar o que de execução de SQL da biblioteca principal, a principal causa do erro.

Na biblioteca principal para executar:

/ Usr / local / mysql / bin / mysqlbinlog -no-defaults -v -v -base64-output = decodificar-fileiras /data/mysql/mysql-bin.000014 | -A grep 10 1708> 1.log

1.log gato

Depois de adquirir a instrução SQL, você pode executar instruções SQL em sentido inverso a partir da biblioteca. A biblioteca está faltando na conclusão da instrução SQL, resolver a mensagem de erro.

Q, os dados de exclusão truncar que conduzem ao ID auto-energizar automaticamente esvaziado, os retornos de front-end um erro não encontradas

uso pessoal não é recomendado operação de exclusão da tabela truncada, embora você possa recuperar o espaço de mesa, mas irá envolver questões de propriedade de incremento. Estes poços, não facilmente cavar.

R, arquivo de configuração Ali nuvem MySQL

arquivo de configuração Ali nuvem MySQL, você precisa prestar atenção a um parâmetro é:

² lower_case_nome_tabelas = 0; padrão.

² lower_case_nome_tabelas = 1;. Não é sensível.

Se você relatar um minúsculas nomes de tabela não pode ser encontrado, então você colocar o nome da minúscula distal tabela de banco de dados, e vice-versa. Nota arquivo MyBatis Mapper de todos os nomes de tabela deve ser alterada em conformidade.

S, o caso dos chineses ilegível banco de dados sempre aparecerá

Solução: Para o chinês ilegível situação, lembre-se que o professor disse que três podem ser unificados. Mas também sei o atual banco de dados MySQL conjunto de caracteres de codificação é o UTF8 padrão.

Abordagem:

terminal de dados, que é a nossa ferramenta para conectar o banco de dados para utf8.

o nível de sistema operacional, você pode ver por cat / etc / sysconfig / i18n, também definido como utf8.

nível de banco de dados, no mysqld arquivo de parâmetro, acrescentou character-set-server = utf8.

Emoji emoticons erro entrada no banco de dados MySQL:

Solução: inserção para a expressão do problema, algum problema ou conjunto de caracteres.

Aproxime-se: podemos diretamente no arquivo de parâmetro, adicione:

vim /etc/my.cnf 

[Mysqld] 

= init-connect 'Definir NOMES utf8mb4' 

character-set-server = utf8mb4 

Nota: utf8mb4 utf8 é um super.

T, usando binlog_format = declaração neste formato, entre bancos de dados, resultando em perda de dados a partir do banco de dados, o acesso do usuário aos dados resulta em uma mensagem de erro

O registro de banco de dados formato binário atual é: binlog_format = declaração

Desde binlog-do-db = mydb1 (apenas uma mydb1 síncrona esta biblioteca) na biblioteca mestre.

Use mydb2 executado na biblioteca principal;

Recomendado em um ambiente de produção usando o formato de log binário para a linha, mas parâmetro cautela binlog-do-db.

U, erro de tempo limite de conexão de banco de dados MySQL

Este problema é influenciada por dois parâmetros, wait_timeout e interactive_timeout.

Os dados de tempo de configuração padrão é 28800 (8 horas) significa que, depois de mais de desta vez, banco de dados MySQL, a fim de economizar recursos, ele vai desligar a ligação no lado do banco de dados, desconexão do servidor MySQL, mas usamos o programa novamente o juiz não fazer qualquer conexão, então eu desliguei.

Solução: primeiro a entender as características destes dois parâmetros, estes dois parâmetros devem ser definidos e devem ser garantidas a mesma lata.

Podemos aumentar o valor, oito horas é muito tempo, não é adequado para um ambiente de produção. Porque uma conexão por um longo tempo não funciona, mas também ocupam nossas conexões, nós irá consumir recursos do sistema.

Solução: pode ser adequadamente determinada no processo, é fortemente recomendada para alterar a lógica da aplicação no final da operação para fechar adequadamente a ligação, e, em seguida, definir um valor de tempo limite razoável (determinação de acordo com as condições de tráfego).

V, não pode abrir arquivo (errno: 24)

Solução: Em primeiro lugar, é preciso primeiro ver o banco de dados de log de erro. Em seguida, o juiz é a tabela de corrupção ou problemas de permissões. Limite inferior do sistema operacional também deve prestar atenção ;; normalmente não podem acessar a tabela pode haver espaço em disco insuficiente para erro específico causado pela ferramenta perror!

Exceder o número máximo de limite de arquivos abertos! Ulimit -n para ver o número máximo de sistema de arquivos abertos é 65535, não podem exceder! Esse deve ser o número máximo de arquivos abertos no banco de dados exceder o limite!

Verifique o número máximo de comando limite de arquivo aberto em MySQL: mostra variáveis ​​como 'open_files_limit';

Encontrado que o número é muito pequeno, alterado para 2048, reinicialização MySQL, o uso normal.

Abordagem:

reparação de mesa;

chown mysql permissões

disco limpeza dados lixo

Acho que você gosta

Origin blog.51cto.com/9625010/2480380
Recomendado
Clasificación