A database server is an critical component of the network infrastructure necessary for today’s applications. Without the ability to store, retrieve, update, and delete data (when needed), the usefulness and scope of web and desktop apps becomes very limited.

Além disso, saber como instalar, gerenciar e configurar um servidor de banco de dados (para que ele funcione conforme esperado) é uma habilidade essencial que todo administrador de sistemas deve ter.
Neste artigo, iremos revisar brevemente como instalar e proteger um servidor de banco de dados MariaDB e então explicaremos como configurá-lo.
Instalando e Protegendo um Servidor MariaDB
No CentOS 7.x, o MariaDB substituiu o MySQL, que ainda pode ser encontrado no Ubuntu (juntamente com o MariaDB). O mesmo ocorre com o openSUSE.
Por questão de brevidade, utilizaremos apenas o MariaDB neste tutorial, mas observe que, apesar de terem nomes e filosofias de desenvolvimento diferentes, ambos os Sistemas de Gerenciamento de Banco de Dados Relacional (RDBMSs para abreviar) são praticamente idênticos.
Isto significa que os comandos do lado do cliente são os mesmos tanto no MySQL quanto no MariaDB, e os arquivos de configuração possuem os mesmos nomes e estão localizados nos mesmos lugares.
Para instalar o MariaDB, faça o seguinte:
--------------- On CentOS/RHEL 7 and Fedora 23 --------------- # yum update && yum install mariadb mariadb-server # CentOS --------------- On Debian and Ubuntu --------------- $ sudo aptitude update && sudo aptitude install mariadb-client mariadb-server --------------- On openSUSE --------------- # zypper update && zypper install mariadb mariadb-tools # openSUSE
Observe que, no Ubuntu, você será solicitado a inserir uma senha para o usuário root do RDBMS.
Depois que os pacotes acima forem instalados, certifique-se de que o serviço de banco de dados esteja em execução e tenha sido ativado para iniciar durante a inicialização (no CentOS e openSUSE, você precisará fazer esta operação manualmente, enquanto no Ubuntu o processo de instalação já cuidará disso para você):
--------------- On CentOS/RHEL 7 and Fedora 23 --------------- # systemctl start mariadb && systemctl enable mariadb --------------- On openSUSE --------------- # systemctl start mysql && systemctl enable mysql
Em seguida, execute o script mysql_secure_installation
. Este processo permitirá que você:
- definir / redefinir a senha para o usuário root do RDBMS
- remover logins anônimos (assim, permitindo apenas que usuários com uma conta válida façam login no RDBMS)
- desativar o acesso root para máquinas que não sejam o localhost
- remover o banco de dados de teste (que qualquer pessoa pode acessar)
- ativar as alterações associadas aos itens 1 a 4
Para uma descrição mais detalhada deste processo, você pode se referir à seção Pós-instalação em Instalar o Banco de Dados MariaDB no RHEL/CentOS/Fedora e Debian/Ubuntu
Configurando o Servidor MariaDB
As opções de configuração padrão são lidas nos seguintes arquivos na ordem fornecida: /etc/mysql/my.cnf
, /etc/my.cnf
e ~/.my.cnf
Muitas vezes, apenas o /etc/my.cnf
existe. É neste arquivo que iremos definir as configurações de nível global do servidor (que podem ser substituídas pelas mesmas configurações em ~/.my.cnf
para cada usuário)
A primeira coisa que precisamos observar sobre o my.cnf
é que as configurações são organizadas em categorias (ou grupos) onde cada nome de categoria é cercado por colchetes
As configurações do sistema do servidor são fornecidas na seção [mysqld]
, onde tipicamente você encontrará apenas as duas primeiras configurações na tabela abaixo. O restante são outras opções frequentemente usadas (quando indicado, alteraremos o valor padrão por um personalizado de nossa escolha)
Setting and description | Default value |
datadir is the directory where the data files are stored. | datadir=/var/lib/mysql |
socket indicates the name and location of the socket file that is used for local client connections. Keep in mind that a socket file is a resource that is utilized to pass information between applications. | socket=/var/lib/mysql/mysql.sock |
bind_address is the address where the database server will listen on for TCP/IP connections. If you need your server to listen on more than one IP address, leave out this setting (0.0.0.0 which means it will listen on all IP addresses assigned to this specific host).
Vamos alterar isso para instruir o serviço a escutar apenas em seu endereço principal (192.168.0.13): bind_address=192.168.0.13 |
bind_address=0.0.0.0 |
port represents the port where the database server will be listening.
Vamos substituir o valor padrão (3306) por 20500 (mas precisamos ter certeza de que nada mais está usando essa porta): Embora algumas pessoas argumentem que a segurança por meio de obscuridade não é uma boa prática, mudar as portas padrão dos aplicativos para números mais altos é um método rudimentar – mas eficaz – para desencorajar varreduras de portas. |
port=3306 |
innodb_buffer_pool_size is the buffer pool (in bytes) of memory that is allocated for data and indexes that are accessed frequently when using Innodb (which is the default in MariaDB) or XtraDB as storage engine.
Vamos substituir o valor padrão por 256 MB: innodb_buffer_pool_size=256M |
innodb_buffer_pool_size=134217728 |
skip_name_resolve indicates whether hostnames will be resolved or not on incoming connections. If set to 1, as we will do in this guide, only IP addresses.
A menos que você precise de nomes de host para determinar permissões, é recomendável desativar essa variável (para acelerar conexões e consultas) definindo seu valor como 1: skip_name_resolve=1 |
skip_name_resolve=0 |
query_cache_size represents the size (in bytes) available to the query cache in disk, where the results of SELECT queries are stored for future use when an identical query (to the same database and using the same protocol and same character set) is performed.
Você deve escolher um tamanho de cache de consulta que corresponda às suas necessidades com base em 1) o número de consultas repetitivas e 2) o número aproximado de registros que essas consultas repetitivas devem retornar. Por enquanto, definiremos esse valor como 100 MB: query_cache_size=100M |
query_cache_size=0 (which means it is disabled by default) |
max_connections is the maximum number of simultaneous client connections to the server. We will set this value to 30: max_connections=30Each connection will use a thread, and thus will consume memory. Take this fact into account while setting max_connections. |
max_connections=151 |
thread_cache_size indicates the numbers of threads that the server allocates for reuse after a client disconnects and frees thread(s) previously in use. In this situation, it is cheaper (performance-wise) to reuse a thread than instantiating a new one.
Novamente, isso depende do número de conexões que você espera. Podemos definir esse valor com segurança como metade do número de max_connections: thread_cache_size=15 |
thread_cache_size=0 (disabled by default) |
Em CentOS, precisaremos informar SELinux para permitir que MariaDB escute em uma porta não padrão (20500) antes de reiniciar o serviço:
# yum install policycoreutils-python # semanage port -a -t mysqld_port_t -p tcp 20500
Em seguida, reinicie o serviço MariaDB.
Otimização do Desempenho do MariaDB
Para nos ajudar a verificar e ajustar a configuração de acordo com nossas necessidades específicas, podemos instalar o mysqltuner (um script que fornecerá sugestões para melhorar o desempenho do nosso servidor de banco de dados e aumentar sua estabilidade):
# wget https://github.com/major/MySQLTuner-perl/tarball/master # tar xzf master
Em seguida, mude para o diretório da pasta extraída do arquivo tarball (a versão exata pode ser diferente no seu caso):
# cd major-MySQLTuner-perl-7dabf27
e execute-o (você será solicitado a inserir as credenciais de sua conta administrativa do MariaDB)
# ./mysqltuner.pl
A saída do script é em si muito interessante, mas vamos pular para o final, onde as variáveis a serem ajustadas são listadas com o valor recomendado:

A configuração query_cache_type
indica se o cache de consulta está desativado (0) ou ativado (1). Neste caso, mysqltuner está nos aconselhando a desativá-lo.
Então, por que somos aconselhados a desativá-lo agora? A razão é que o cache de consulta é útil principalmente em cenários de alto leitura / baixa gravação (o que não é o nosso caso, já que acabamos de instalar o servidor de banco de dados).
AVISO: Antes de fazer alterações na configuração de um servidor de produção, é altamente recomendável consultar um administrador de banco de dados especializado para garantir que uma recomendação dada pelo mysqltuner não impactará negativamente em uma configuração existente.
Resumo
Neste artigo, explicamos como configurar um servidor de banco de dados MariaDB após tê-lo instalado e protegido. As variáveis de configuração listadas na tabela acima são apenas algumas configurações que você pode considerar ao preparar o servidor para uso ou ao ajustá-lo posteriormente. Sempre consulte a documentação oficial do MariaDB antes de fazer alterações ou consulte nossas dicas de otimização de desempenho do MariaDB:
Não Perca: 15 Dicas Úteis de Otimização e Ajuste de Desempenho do MariaDB
Como sempre, não hesite em nos informar se tiver alguma dúvida ou comentário sobre este artigo. Existem outras configurações de servidor que você gosta de usar? Sinta-se à vontade para compartilhar com o restante da comunidade usando o formulário de comentários abaixo.
Source:
https://www.tecmint.com/install-secure-performance-tuning-mariadb-database-server/