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.

Saber como instalar, gerenciar e configurar um servidor de banco de dados (para que ele opere conforme o esperado) é uma habilidade essencial que todo administrador de sistema deve ter.
Neste artigo, revisaremos brevemente como instalar e proteger um servidor de banco de dados MariaDB e, em seguida, 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 (junto com o MariaDB). O mesmo acontece com o openSUSE.
Por questão de brevidade, usaremos apenas o MariaDB neste tutorial, mas observe que, além de terem nomes e filosofias de desenvolvimento diferentes, ambos os Sistemas de Gerenciamento de Banco de Dados Relacionais (RDBMSs para abreviar) são quase idênticos.
Isso significa que os comandos do lado do cliente são os mesmos tanto no MySQL quanto no MariaDB, e os arquivos de configuração têm nomes e estão localizados nos mesmos lugares.
Para instalar o MariaDB, faça:
--------------- 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, será solicitado que você insira 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 na inicialização (no CentOS e openSUSE, você precisará realizar essa operação manualmente, enquanto no Ubuntu o processo de instalação já terá cuidado 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
. Esse processo permitirá que você:
- Defina / redefina a senha para o usuário root do RDBMS
- remova logins anônimos (permitindo apenas usuários com uma conta válida fazer login no RDBMS)
- desative o acesso root para máquinas que não sejam localhost
- remova o banco de dados de teste (que qualquer um pode acessar)
- ative as alterações associadas de 1 a 4.
Para uma descrição mais detalhada deste processo, você pode consultar a seção Pós-instalação em Instalar 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
.
Na maioria das vezes, apenas /etc/my.cnf
existe. É neste arquivo que definiremos as configurações em todo o servidor (que podem ser substituídas pelas mesmas configurações em ~/.my.cnf
para cada usuário).
A primeira coisa que precisamos observar sobre 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, mudaremos o valor padrão para 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 mudar 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 garantir que nenhum outro esteja usando essa porta): Embora algumas pessoas argumentem que segurança através da obscuridade não seja uma boa prática, mudar as portas padrão da aplicação para valores mais altos é um método rudimentar – porém 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ê necessite de nomes de host para determinar permissões, é aconselhá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 atenda à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. Vamos definir esse valor como 100 MB por enquanto: 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ê está esperando. Podemos definir com segurança esse valor como metade do número de max_connections: thread_cache_size=15 |
thread_cache_size=0 (disabled by default) |
No CentOS, precisaremos dizer ao SELinux para permitir que o 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 do MariaDB.
Ajustando o 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 tarball (a versão exata pode diferir 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 consultas 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 consultas é ú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 especialista para garantir que uma recomendação dada pelo mysqltuner não terá impacto negativo em uma configuração existente.
Resumo
Neste artigo, explicamos como configurar um servidor de banco de dados MariaDB depois de instalá-lo e protegê-lo. 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 ajuste 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/