https://anothermysqldba.blogspot.com/2025/04/homelab.html
Só por diversão...
Existem inúmeras opções para testar instâncias de bancos de dados MySQL e gerais.
Este é apenas um exemplo de como você pode usar o Proxmox para ter uma configuração rápida e simples para testes e acesso repetíveis.
Este exemplo é uma opção boa e barata para ter um laboratório em casa para MySQL e qualquer outra coisa que você queira.
A virtualização de homelab que escolhi foi Proxmox e Openmediavaul para armazenamento NFS estendido (não estou 100% convencido do Openmediavault , o Debian sozinho poderia fazer isso)
Hardware Escolhi uma configuração simples e compacta:
- Mini PC Intel N100 R1 4C/4T, suporta 44T (2 * 22T), armazenamento de 2 baias, mini PC 3 em 1, 32 GB DDR4, SSD NVME de 1 TB, Windows WiFi 6, roteador LAN duplo 2,5 G, HTPC
- Mini PC GMKtec G3 Plus, Intel Twin Lake N150 (atualizado para N100), 16 GB de RAM, 512 GB de SSD M.2 2280, Minicomputador de mesa Dual HDMI/WiFi6/BT5.2
Essa virtualização também permite que você tenha um ambiente que pode ser executado conforme necessário, desligado ou até mesmo desligado e retornado quando quiser.
Permite também clonar cada instância para instâncias adicionais e testes, se desejado, após a configuração.
Esta será uma configuração direta muito simples em todos eles.
Você pode criar dispositivos de bloco para cada diretório de dados ou NFS se preferir, mas tudo isso será instalação direta local para demonstração.
Objetivo de testar e demonstrar:
- Instalar
- Monitoramento
- Rotação de senha do cofre
Debian BASE
Configurei uma instância do Debian 12 com 4 GB e 4 CPUs.
Em seguida, converti isso como um modelo para poder vincular todas as outras instâncias a partir dele.
Isso torna a configuração de outras instâncias muito mais rápida, além de ter a mesma base para começar.
┌──(root㉿debian12-server)-[~] └─# uname -a Linux debian12-server 6.1.0-32-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.129-1 (06/03/2025) x86_64 GNU/Linux apt install unzip cd /usr/local/src/ wget https://releases.hashicorp.com/vault/1.4.2/vault_1.4.2_linux_amd64.zip descompacte o vault_1.4.2_linux_amd64.zip mv cofre /usr/bin/ setcap cap_ipc_lock=+ep /usr/bin/vault # cofre -v Cofre v1.4.2
MariaDB 11 Rolling
vi /etc/rede/interfaces auto ens18 iface ens18 inet estático endereço 192.168.3.100 máscara de rede 255.255.255.0 portal 192.168.3.1 servidores de nomes DNS 8.8.8.8 8.8.4.4 # nome do host mariadb1.sqlhjalp.com sudo apt-get install apt-transport-https curl sudo mkdir -p /etc/apt/keyrings sudo curl -o /etc/apt/keyrings/mariadb-keyring.pgp 'https://mariadb.org/mariadb_release_signing_key.pgp' vi /etc/apt/sources.list.d/mariadb.sources ┌──(raiz㉿mariadb1)-[~] └─# cat /etc/apt/sources.list.d/mariadb.sources # MariaDB 11 Lista de repositórios contínuos - criada em 2025-04-01 15:13 UTC # https://mariadb.org/download/ X-Repolib-Nome: MariaDB Tipos: deb # deb.mariadb.org é um espelho dinâmico caso o seu espelho preferido fique offline. Consulte https://mariadb.org/mirrorbits/ para obter detalhes. # URIs: https://deb.mariadb.org/11/debian URIs: https://mirror.its.dal.ca/mariadb/repo/11.rolling/debian Suítes: leitor ávido Componentes: principal Assinado por: /etc/apt/keyrings/mariadb-keyring.pgp ┌──(raiz㉿mariadb1)-[~] └─# apt-get update ┌──(raiz㉿mariadb1)-[~] └─# apt-get install mariadb-server -y ┌──(raiz㉿mariadb1)-[~] └─# mariadb Bem-vindo ao monitor MariaDB. Os comandos terminam com ; ou \g. Seu ID de conexão MariaDB é 32 Versão do servidor: 11.7.2-MariaDB-deb12 distribuição binária mariadb.org Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab e outros. Digite 'help;' ou '\h' para obter ajuda. Digite '\c' para limpar a instrução de entrada atual. MariaDB [(nenhum)]> MariaDB [(nenhum)]> saída Tchau ┌──(raiz㉿mariadb1)-[~] └─# systemctl stop mariadb.service
Só para esclarecer. Sim, com um servidor vinculado ao Proxmox, você pode reiniciar e ele mantém todos os seus valores e configurações.
┌──(raiz㉿mariadb1)-[~] └─# tempo de atividade 10:27:29, 1 min, 2 usuários, carga média: 0,15, 0,11, 0,04 ┌──(raiz㉿mariadb1)-[~] └─# mariadb Bem-vindo ao monitor MariaDB. Os comandos terminam com ; ou \g. Seu ID de conexão MariaDB é 33 Versão do servidor: 11.7.2-MariaDB-deb12 distribuição binária mariadb.org Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab e outros. Digite 'help;' ou '\h' para obter ajuda. Digite '\c' para limpar a instrução de entrada atual. MariaDB [(nenhum)]> status -------------- mariadb de 11.7.2-MariaDB, cliente 15.2 para debian-linux-gnu (x86_64) usando wrapper EditLine ID de conexão: 33 Banco de dados atual: Usuário atual: root@localhost SSL: A cifra em uso é TLS_AES_256_GCM_SHA384, o certificado está OK Pager atual: stdout Usando outfile: '' Usando delimitador: ; Servidor: MariaDB Versão do servidor: 11.7.2-MariaDB-deb12 distribuição binária mariadb.org Versão do protocolo: 10 Conexão: Localhost via soquete UNIX Conjunto de caracteres do servidor: utf8mb4 Conjunto de caracteres do banco de dados: utf8mb4 Conjunto de caracteres do cliente: utf8mb3 Conjunto de caracteres de conexão: utf8mb3 Soquete UNIX: /run/mysqld/mysqld.sock Tempo de atividade: 1 min 45 s Tópicos: 1 Perguntas: 61 Consultas lentas: 0 Aberturas: 33 Tabelas abertas: 26 Consultas por segundo em média: 0,580 --------------
Inovação MySQL
vi /etc/rede/interfaces auto ens18 iface ens18 inet estático endereço 192.168.3.101 máscara de rede 255.255.255.0 portal 192.168.3.1 servidores de nomes DNS 8.8.8.8 8.8.4.4 # apt install gnupg -y # cd /usr/local/src/ # wget https://dev.mysql.com/get/mysql-apt-config_0.8.33-1_all.deb # dpkg -i mysql-apt-config_0.8.33-1_all.deb │ Qual versão do servidor você deseja receber? │ mysql-8.0 mysql-innovation <-- Escolhi isso mysql-8.4-lts mysql-cluster-8.0 inovação em cluster mysql mysql-cluster-8.4-lts Nenhum Qual produto MySQL você deseja configurar? Servidor e cluster MySQL (atualmente selecionado: mysql-innovation) Conectores MySQL (Atualmente selecionado: Habilitado) OK # apt-get atualização # apt-get install mysql-server -y ─# mysql -u root -p Digite a senha: Bem-vindo ao monitor MySQL. Os comandos terminam com ; ou \g. Seu ID de conexão MySQL é 9 Versão do servidor: 9.2.0 MySQL Community Server - GPL Copyright (c) 2000, 2025, Oracle e/ou suas afiliadas. Oracle é uma marca registrada da Oracle Corporation e/ou seus afiliadas. Outros nomes podem ser marcas registradas de seus respectivos proprietários. Digite 'help;' ou '\h' para obter ajuda. Digite '\c' para limpar a instrução de entrada atual. mysql> estado -------------- mysql Ver 9.2.0 para Linux em x86_64 (MySQL Community Server - GPL) ID de conexão: 9 Banco de dados atual: Usuário atual: root@localhost SSL: Não em uso Pager atual: stdout Usando outfile: '' Usando delimitador: ; Versão do servidor: 9.2.0 MySQL Community Server - GPL Versão do protocolo: 10 Conexão: Localhost via soquete UNIX Conjunto de caracteres do servidor: utf8mb4 Conjunto de caracteres do banco de dados: utf8mb4 Conjunto de caracteres do cliente: utf8mb4 Conjunto de caracteres de conexão: utf8mb4 Soquete UNIX: /var/run/mysqld/mysqld.sock Dados binários como: Hexadecimal Tempo de atividade: 47 seg Tópicos: 2 Perguntas: 6 Consultas lentas: 0 Aberturas: 119 Tabelas de limpeza: 3 Tabelas abertas: 38 Consultas por segundo em média: 0,127
MySQL Innovation NDB CLuster
gato /etc/rede/interfaces auto ens18 iface ens18 inet estático endereço 192.168.3.102 máscara de rede 255.255.255.0 portal 192.168.3.1 servidores de nomes DNS 8.8.8.8 8.8.4.4 auto ens18 iface ens18 inet estático endereço 192.168.3.103 máscara de rede 255.255.255.0 portal 192.168.3.1 servidores de nomes DNS 8.8.8.8 8.8.4.4 auto ens18 iface ens18 inet estático endereço 192.168.3.103 máscara de rede 255.255.255.0 portal 192.168.3.1 servidores de nomes DNS 8.8.8.8 8.8.4.4 # apt install gnupg -y # cd /usr/local/src/ # wget https://dev.mysql.com/get/mysql-apt-config_0.8.33-1_all.deb # dpkg -i mysql-apt-config_0.8.33-1_all.deb │ Qual versão do servidor você deseja receber? mysql-8.0 mysql-inovação mysql-8.4-lts mysql-cluster-8.0 mysql-cluster-innovation <-- Escolhi isso mysql-cluster-8.4-lts Nenhum Qual produto MySQL você deseja configurar? Servidor e cluster MySQL (atualmente selecionado: mysql-cluster-innovation) Conectores MySQL (Atualmente selecionado: Habilitado) OK # apt-get atualização # apt-get install mysql-cluster-community-server -y # apt-get install mysql-cluster-community-management-server <-- podemos escolher mais tarde qual usar # apt-get install mysql-cluster-community-data-node -y # vi /etc/mysql/conf.d/mysql.cnf [mysqld] # Opções para o processo mysqld: ndbcluster # executa o mecanismo de armazenamento NDB [mysql_cluster] # Opções para processos de cluster NDB: ndb-connectstring=192.168.3.102 # localização do servidor de gerenciamento # mkdir /var/lib/mysql-cluster # cd /var/lib/mysql-cluster # vi config.ini [ndbd padrão] # Opções que afetam os processos ndbd em todos os nós de dados: NoOfReplicas=2 # Número de réplicas de fragmentos DataMemory=98M # Quanta memória alocar para armazenamento de dados [ndb_mgmd] # Opções do processo de gerenciamento: HostName=192.168.3.102 # Nome do host ou endereço IP do nó de gerenciamento DataDir=/var/lib/mysql-cluster # Diretório para arquivos de log do nó de gerenciamento [não especificado] # Opções para o nó de dados "A": # (uma seção [ndbd] por nó de dados) HostName=192.168.3.103 # Nome do host ou endereço IP NodeId=2 # ID do nó para este nó de dados DataDir=/var/lib/mysql/data # Diretório para os arquivos de dados deste nó de dados [não especificado] # Opções para o nó de dados "B": HostName=192.168.3.104 # Nome do host ou endereço IP NodeId=3 # ID do nó para este nó de dados DataDir=/var/lib/mysql/data # Diretório para os arquivos de dados deste nó de dados [mysqld] # Opções do nó SQL: HostName=192.168.3.102 # Nome do host ou endereço IP # (conexões mysqld adicionais podem ser # especificado para este nó para vários # finalidades como executar ndb_restore) ┌──(root㉿ndb1)-[/var/lib/mysql-cluster] └─# ndb_mgmd --initial -f /var/lib/mysql-cluster/config.ini Servidor de gerenciamento de cluster MySQL mysql-9.2.0 ndb-9.2.0 AVISO: --ndb-connectstring é ignorado quando mgmd é iniciado com -f ou config-file. ┌──(root㉿ndb2)-[/var/lib/mysql-cluster] └─# ndbd 2025-04-01 11:53:11 [ndbd] INFO -- Angel conectado a '192.168.3.102:1186' 2025-04-01 11:53:12 [ndbd] INFO -- Angel alocou nodeid: 2 ┌──(root㉿ndb3)-[/var/lib/mysql-cluster] └─# ndbd 2025-04-01 11:53:19 [ndbd] INFO -- Angel conectado a '192.168.3.102:1186' 2025-04-01 11:53:20 [ndbd] INFO -- ID de nó alocado pelo Angel: 3 ┌──(root㉿ndb1)-[/var/lib/mysql-cluster] └─# ndb_mgm -- Cluster NDB -- Cliente de gerenciamento -- ndb_mgm> mostrar Conectado ao servidor de gerenciamento na porta 1186 192.168.3.102 (usando texto não criptografado) Configuração de cluster --------------------- [ndbd(NDB)] 2 nó(s) id=2 @192.168.3.103 (mysql-9.2.0 ndb-9.2.0, Grupo de nós: 0, *) id=3 @192.168.3.104 (mysql-9.2.0 ndb-9.2.0, Grupo de nós: 0) [ndb_mgmd(MGM)] 1 nó(s) id=1 @192.168.3.102 (mysql-9.2.0 ndb-9.2.0) [mysqld(API)] 1 nó(s) id=4 (não conectado, aceitando conexão de 192.168.3.102) ┌──(root㉿ndb1)-[/var/lib/mysql-cluster] └─# mysql -u root -p -e "selecione @@nomedohost" Digite a senha: +-------------------+ | @@nome do host | +-------------------+ | ndb1.sqlhjalp.com | +-------------------+ ┌──(root㉿ndb2)-[/var/lib/mysql-cluster] └─# mysql -u root -p -e "selecione @@nomedohost" Digite a senha: +-------------------+ | @@nome do host | +-------------------+ | ndb2.sqlhjalp.com | +-------------------+ ┌──(root㉿ndb3)-[/var/lib/mysql-cluster] └─# mysql -u root -p -e "selecione @@nomedohost" Digite a senha: +-------------------+ | @@nome do host | +-------------------+ | ndb3.sqlhjalp.com | +-------------------+
Servidor Percona
# cat /etc/rede/interfaces auto ens18 iface ens18 inet estático endereço 192.168.3.105 máscara de rede 255.255.255.0 portal 192.168.3.1 servidores de nomes DNS 8.8.8.8 8.8.4.4 # apt install curl gnupg gnupg2 lsb-release -y # cd /usr/local/src/ # curl -O https://repo.percona.com/apt/percona-release_latest.generic_all.deb # dpkg -i percona-release_latest.generic_all.deb # percona-release enable-only ps-84-lts release # percona-release habilitar ferramentas de liberação # apt install percona-server-server ┌──(root㉿ps1)-[/usr/local/src] └─# ps -ef |grep mysql mysql 5832 1 0 11:58? 00:00:03 /usr/sbin/mysqld raiz 5924 501 0 12:04 pts/1 00:00:00 grep --color=auto mysql ┌──(root㉿ps1)-[/usr/local/src] └─# mysql -u root -p Digite a senha: Bem-vindo ao monitor MySQL. Os comandos terminam com ; ou \g. Seu ID de conexão MySQL é 9 Versão do servidor: 8.4.4-4 Percona Server (GPL), versão '4', revisão '844fde07' Copyright (c) 2009-2025 Percona LLC e/ou suas afiliadas Copyright (c) 2000, 2025, Oracle e/ou suas afiliadas. Oracle é uma marca registrada da Oracle Corporation e/ou seus afiliadas. Outros nomes podem ser marcas registradas de seus respectivos proprietários. Digite 'help;' ou '\h' para obter ajuda. Digite '\c' para limpar a instrução de entrada atual.
Aglomerado Percona
# cat /etc/rede/interfaces iface ens18 inet estático endereço 192.168.3.106 máscara de rede 255.255.255.0 portal 192.168.3.1 servidores de nomes DNS 8.8.8.8 8.8.4.4 iface ens18 inet estático endereço 192.168.3.106 máscara de rede 255.255.255.0 portal 192.168.3.1 servidores de nomes DNS 8.8.8.8 8.8.4.4 iface ens18 inet estático endereço 192.168.3.106 máscara de rede 255.255.255.0 portal 192.168.3.1 servidores de nomes DNS 8.8.8.8 8.8.4.4 # apt install curl gnupg gnupg2 lsb-release -y # cd /usr/local/src/ # curl -O https://repo.percona.com/apt/percona-release_latest.generic_all.deb # dpkg -i percona-release_latest.generic_all.deb # atualização do apt # configuração percona-release pxc80 # apt install -y percona-xtradb-cluster gato /etc/meu.cnf [cliente] soquete=/var/run/mysqld/mysqld.sock [backup extra] limite de arquivos abertos = 1000000 [mysqld] id do servidor=1 datadir=/var/lib/mysql soquete=/var/run/mysqld/mysqld.sock log-error=/var/log/mysql/error.log arquivo pid=/var/run/mysqld/mysqld.pid caminho-de-log-seguro=/var/lib/arquivos-mysql/ # O período de expiração do log binário é de 604.800 segundos, o que equivale a 7 dias binlog_expire_logs_seconds=604800 userstat = 1 └─# cat /etc/my.cnf | grep criptografar pxc-encrypt-cluster-traffic = DESLIGADO ┌──(raiz㉿pxc1)-[/] └─# cat /etc/my.cnf | endereço grep wsrep_cluster_address = gcomm://192.168.3.106,192.168.3.107,192.168.3.108 # Endereço IP do nó wsrep_node_address=192.168.3.106 ┌──(root㉿pxc1)-[/etc/mysql/conf.d] └─# systemctl start mysql@bootstrap mysql> mostrar status como 'wsrep_c%'; +--------------------------------------+--------------------------------------+ | Nome_da_variável | Valor | +--------------------------------------+--------------------------------------+ | wsrep_cert_deps_distance | 0 | | wsrep_commit_oooe | 0 | | wsrep_commit_oool | 0 | | janela_de_confirmação_do_wsrep | 0 | | tamanho_do_índice_do_certificado_do_wsrep | 0 | | contagem_de_bucket_de_certificação_wsrep | 1 | | wsrep_causal_reads | 0 | | intervalo_cert_wsrep | 0 | | wsrep_cluster_weight | 1 | | capacidades_do_cluster_do_wsrep | | | ID de configuração do cluster wsrep | 1 | | tamanho_do_cluster_wsrep | 1 | | uuid_de_estado_do_cluster_wsrep | 71a6ebf4-0f20-11f0-b4eb-0a0f463a7185 | | wsrep_cluster_status | Primário | | wsrep_connected | LIGADO | +--------------------------------------+--------------------------------------+ 15 linhas em conjunto (0,00 seg) ┌──(root㉿pxc2)-[/etc] └─# cat /etc/my.cnf | endereço grep wsrep_cluster_address = gcomm://192.168.3.106,192.168.3.107,192.168.3.108 # Endereço IP do nó wsrep_node_address=192.168.3.107 ┌──(raiz㉿pxc2)-[/var/lib/mysql] └─# rm -Rf * ┌──(raiz㉿pxc2)-[/var/lib/mysql] └─# ls -tla total 8 drwxr-x--- 2 mysql mysql 4096 1 de abr 13:36 . drwxr-xr-x 26 root root 4096 1 de abr 12:34 .. ┌──(raiz㉿pxc2)-[/var/lib/mysql] └─# systemctl iniciar mysql ┌──(root㉿pxc2)-[/etc] └─# cat /etc/my.cnf | endereço grep wsrep_cluster_address = gcomm://192.168.3.106,192.168.3.107,192.168.3.108 # Endereço IP do nó wsrep_node_address=192.168.3.107 ┌──(raiz㉿pxc3)-[/var/lib/mysql] └─# rm -Rf * ┌──(raiz㉿pxc3)-[/var/lib/mysql] └─# systemctl iniciar mysql mysql> mostrar status como 'wsrep_c%'; +--------------------------------------+--------------------------------------+ | Nome_da_variável | Valor | +--------------------------------------+--------------------------------------+ | wsrep_cert_deps_distance | 0 | | wsrep_commit_oooe | 0 | | wsrep_commit_oool | 0 | | janela_de_confirmação_do_wsrep | 0 | | tamanho_do_índice_do_certificado_do_wsrep | 0 | | contagem_de_bucket_de_certificação_wsrep | 1 | | wsrep_causal_reads | 0 | | intervalo_cert_wsrep | 0 | | wsrep_cluster_weight | 3 | | capacidades_do_cluster_do_wsrep | | | ID de configuração do cluster wsrep | 3 | | tamanho_do_cluster_wsrep | 3 | | uuid_de_estado_do_cluster_wsrep | 71a6ebf4-0f20-11f0-b4eb-0a0f463a7185 | | wsrep_cluster_status | Primário | | wsrep_connected | LIGADO | +--------------------------------------+--------------------------------------+ 15 linhas em conjunto (0,00 seg)
Configurar exportadores MySQL e Prometheus
por cada máquina...
apt install -y prometheus-mysqld-exporter CRIAR USUÁRIO SE NÃO EXISTIR 'prometheus'@'localhost' IDENTIFICADO POR '<SENHAAQUI>';
mysql> mostrar concessões para 'prometheus'@'localhost'; +--------------------------------------------------------------------------------------------+ | Subsídios para prometheus@localhost | +--------------------------------------------------------------------------------------------+ | CONCEDER SELEÇÃO, PROCESSO, REPLICAÇÃO CLIENTE EM *.* PARA `prometheus`@`localhost` | +--------------------------------------------------------------------------------------------+ 1 linha no conjunto (0,00 seg) ┌──(raiz㉿pxc1)-[~] └─# ls -ltr /etc/mysql/debian.cnf -rw-r--r-- 1 root root 50 1 de abril 16:52 /etc/mysql/debian.cnf # vi /etc/default/prometheus-mysqld-exporter systemctl reiniciar prometheus-mysqld-exporter.service # systemctl restart prometheus-mysqld-exporter.service
Servidor Prometheus
root@prometheus:/etc/prometheus# vi prometheus.yml - nome_da_tarefa: mysqld-exporter configurações_estáticas: - alvos: - 'mysql1.sqlhjalp.com:9104' - 'mariadb1.sqlhjalp.com:9104' - 'ps1.sqlhjalp.com:9104' - 'pxc1.sqlhjalp.com:9104' - 'pxc2.sqlhjalp.com:9104' - 'pxc3.sqlhjalp.com:9104' - 'ndb1.sqlhjalp.com:9104' - 'ndb2.sqlhjalp.com:9104' - 'ndb3.sqlhjalp.com:9104' rótulos: país: EUA db_env: 'casa' ambiente: "demo" Linux: Debian nodeuse: servidor mysql_up{ambiente="demonstração"} Valor do Elemento mysql_up{país="EUA",db_env="home",ambiente="demo",instância="mariadb1.sqlhjalp.com:9104",job="mysqld-exporter",linux="debian",nodeuse="servidor"} 1 mysql_up{país="EUA",db_env="home",ambiente="demo",instância="mysql1.sqlhjalp.com:9104",job="mysqld-exporter",linux="debian",nodeuse="servidor"} 1 mysql_up{país="EUA",db_env="home",ambiente="demo",instância="ndb1.sqlhjalp.com:9104",job="mysqld-exporter",linux="debian",nodeuse="servidor"} 1 mysql_up{país="EUA",db_env="home",ambiente="demo",instância="ndb2.sqlhjalp.com:9104",job="mysqld-exporter",linux="debian",nodeuse="servidor"} 1 mysql_up{país="EUA",db_env="home",ambiente="demo",instância="ndb3.sqlhjalp.com:9104",job="mysqld-exporter",linux="debian",nodeuse="servidor"} 1 mysql_up{país="EUA",db_env="home",ambiente="demo",instância="ps1.sqlhjalp.com:9104",job="mysqld-exporter",linux="debian",nodeuse="servidor"} 1 mysql_up{país="EUA",db_env="home",ambiente="demo",instância="pxc1.sqlhjalp.com:9104",job="mysqld-exporter",linux="debian",nodeuse="servidor"} 1 mysql_up{país="EUA",db_env="home",ambiente="demo",instância="pxc2.sqlhjalp.com:9104",job="mysqld-exporter",linux="debian",nodeuse="servidor"} 1 mysql_up{país="EUA",db_env="home",ambiente="demo",instância="pxc3.sqlhjalp.com:9104",job="mysqld-exporter",linux="debian",nodeuse="servidor"} 1
CONFIGURAÇÃO DA CONTA DO Vault
mysql> CRIAR FUNÇÃO SE NÃO EXISTIR vaultaccess; mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY BASES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `vaultaccess`@`%` WITH GRANT OPTION; CRIAR USUÁRIO `vaultadmin`@`%` IDENTIFICADO POR '<PASSWORDHERE>' FUNÇÃO PADRÃO `vaultaccess`@`%` NÃO EXIGE NENHUMA SENHA EXPIRAR CONTA PADRÃO DESBLOQUEAR HISTÓRICO DE SENHAS INTERVALO DE REUTILIZAÇÃO DE SENHA PADRÃO SENHA PADRÃO EXIGE PADRÃO ATUAL ; mysql> mostrar concessões para vaultadmin; CRIE A FUNÇÃO SE NÃO EXISTIR SOMENTE LEITURA; CONCEDER SELEÇÃO, EXECUTAR EM *.* PARA `READONLY`@`%` ;
Mariadb
MariaDB [(none)]> CRIAR USUÁRIO `vaultadmin`@`%` IDENTIFICADO POR '<SENHAAQUI>';
MariaDB [(none)]> CONCEDER SELECIONAR, INSERIR, ATUALIZAR, EXCLUIR, CRIAR, REMOVER, RECARREGAR, PROCESSAR, ARQUIVAR, REFERÊNCIAS, INDEXAR, ALTERAR, MOSTRAR BANCOS DE DADOS, SUPER, CRIAR TABELAS TEMPORÁRIAS, BLOQUEAR TABELAS, EXECUTAR, CRIAR VISUALIZAÇÃO, MOSTRAR VISUALIZAÇÃO, CRIAR USUÁRIO, EVENTO, GATILHO, CRIAR ESPAÇO DE TABELA EM *.* PARA `vaultadmin`@`%` COM OPÇÃO DE CONCESSÃO;
Mecanismo de banco de dados Vault - repetido por instância de banco de dados
vault escreve banco de dados/configuração/plugin MYSQL nome_do_plugin=mysql-database-plugin url_de_conexão="{{nome_de_usuário}}:{{senha}}@tcp(mysql1.sqlhjalp.com:3306)/" funções_permitidas="minha-função" nome_de_usuário="vaultadmin" senha="<SENHA AQUI>"
leitura do cofre banco de dados/configuração/MYSQL Valor-chave --- ----- funções_permitidas [] mapa de detalhes da conexão [backend: url_de_conexão_do_banco_de_dados: {{nome_de_usuário}}: {{senha}} @ tcp (mysql1.sqlhjalp.com:3306) / tempo_de_vida_máximo_da_conexão: 0 s conexões_ociosas_máximas: 0 conexões_abertas_máximas: 4 nome_de_usuário: administrador_do_cofre] desabilitar_rotação_automatizada falso política_de_senha n/a nome_do_plugin plugin-de-banco-de-dados-mysql versão_do_plugin n/a credenciais_raiz_rotação_de_instruções [] período_de_rotação 0s programação de rotação n/a janela_de_rotação 0 skip_static_role_import_rotation falso verificar_conexão verdadeiro leitura do cofre banco de dados/funções/DEMOREADONLY Valor-chave --- ----- creation_statements [CRIAR USUÁRIO '{{name}}'@'%' IDENTIFICADO POR '{{password}}'; CONCEDER SELEÇÃO EM *.* PARA '{{name}}'@'%';] credencial_tipo senha nome_do_banco_de_dados MYSQL default_ttl 1h max_ttl 24h renovar_declarações [] declarações_de_revocação [EXCLUIR USUÁRIO SE EXISTIR '{{name}}'@'%';] instruções de rollback []
Exemplo de usuário dinâmico do Vault
leitura do cofre banco de dados/credenciais/DEMOREADONLY Valor-chave --- ----- lease_id banco de dados/creds/DEMOREADONLY/1SACMdnTGXseMewbA6ek1T42 duração do arrendamento 1h lease_renewable verdadeiro senha -piWu8YfOFxUkAqR347a nome de usuário v-userpass-k-DEMOREADON-HFRYaNGE mysql> mostrar concessões para 'v-userpass-k-DEMOREADON-HFRYaNGE'@'%'; +--------------------------------------------------------------------------+ | Subsídios para v-userpass-k-DEMOREADON-HFRYaNGE@% | +--------------------------------------------------------------------------+ | CONCEDER SELEÇÃO EM *.* PARA `v-userpass-k-DEMOREADON-HFRYaNGE`@`%` | +--------------------------------------------------------------------------+ 1 linha no conjunto (0,00 seg)
POSTGRESQL
https://docs.vultr.com/how-to-install-postgresql-on-debian-12
# apt install -y postgresql-common # /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh # atualização do apt # política apt-cache postgresql # apt install postgresql -y # systemctl iniciar postgresql # status do sistema ctl postgresql # sudo -u postgres psql sudo -u postgres psql # postgres=# ALTER ROLE postgres COM SENHA CRIPTOGRAFADA '<senha>'; ALTERAR PAPEL #
Banco de Dados Oracle XE
wget https://download.oracle.com/otn-pub/otn_software/db-express/oracle-database-xe-21c-1.0-1.ol8.x86_64.rpm wget https://yum.oracle.com/repo/OracleLinux/OL8/appstream/x86_64/getPackage/oracle-database-preinstall-21c-1.0-1.el8.x86_64.rpm # yum install ./oracle-database-xe-21c-1.0-1.ol8.x86_64.rpm ./oracle-database-preinstall-21c-1.0-1.el8.x86_64.rpm # /etc/init.d/oracle-xe-21c configure $ exportar ORACLE_SID=XE $ export ORAENV_ASK=NO $ . /opt/oracle/produto/21c/dbhomeXE/bin/oraenv ORACLE_HOME = [] ? /opt/oracle/produto/21c/dbhomeXE A base Oracle foi definida como /opt/oracle [root@localhost ~]# echo $ORACLE_HOME /opt/oracle/produto/21c/dbhomeXE [root@localhost ~]# cd $ORACLE_HOME [root@localhost dbhomeXE]# senha /opt/oracle/produto/21c/dbhomeXE [root@localhost dbhomeXE]# cd bin [root@localhost bin]# sqlplus /nolog SQL*Plus: Versão 21.0.0.0.0 - Produção em qui, 3 de abr de 2025, 10:35:15 Versão 21.3.0.0.0 Copyright (c) 1982, 2021, Oracle. Todos os direitos reservados. SQL> SQL> CONECTAR SYS COMO SYSDBA Digite a senha: Conectado. SQL> SQL> definir tamanho da linha 1500 SQL> selecione nome de usuário, status_da_conta de DBA_USERS; STATUS_DA_CONTA_DE_NOME_DE_USUÁRIO -------------------------------------------------------------------------------------------------------------------------------- -------------------------------- SISTEMA ABERTO SISTEMA ABERTO XS$NULL BLOQUEADO OJVMSYS BLOQUEADO LBACSYS BLOQUEADO OUTLN BLOQUEADO DBSNMP BLOQUEADO APPQOSSYS BLOQUEADO DBSFWUSER BLOQUEADO GGSYS BLOQUEADO ANÔNIMO BLOQUEADO SQL> SAIR Desconectado do Oracle Database 21c Express Edition Release 21.0.0.0.0 - Produção Versão 21.3.0.0.0
SQLSERVER
# curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2022.repo # yum install -y mssql-server # /opt/mssql/bin/mssql-conf configuração # status do sistema ctl mssql-server curl https://packages.microsoft.com/config/rhel/8/prod.repo | sudo tee /etc/yum.repos.d/mssql-release.repo # yum install -y mssql-tools18 unixODBC-devel # yum check-update # yum update mssql-tools18 eco 'exportar PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bash_profile fonte ~/.bash_profile # /opt/mssql/bin/mssql-conf definir-sa-senha Digite a senha do administrador do sistema do SQL Server: Confirme a senha do administrador do sistema do SQL Server: Configurando o SQL Server... # sqlcmd -S localhost -No -U sa # sqlcmd -S localhost -No -U sa Senha: 1> CRIAR BANCO DE DADOS TestDB; 2> SELECIONE Nome DE sys.databases; 3> VAI Nome -------------------------------------------------------------------------------------------------------------------------------- mestre banco de dados temporário modelo msdb TestDB (5 linhas afetadas) USE TestDB; CRIAR TABELA dbo.Inventory ( id INT, nome NVARCHAR (50), quantidade INT, CHAVE PRIMÁRIA (id) ); POXA INSERIR EM dbo.Inventory VALORES (1, 'banana', 150); INSERIR EM dbo.Inventory VALORES (2, 'laranja', 154); IR SELECIONE * DE dbo.Inventory ONDE quantidade > 152; IR 1> SELECIONE * DE dbo.Inventory; 2> VAI id nome quantidade ----------- -------------------------------------------------- ----------- 1 banana 150 2 laranja 154
MONGODB - PERCONA
https://docs.percona.com/percona-server-for-mongodb/8.0/install/apt.html
# apt install -y gnupg2 gnupg curl # wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb # dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb # percona-release --help | grep psmdb psmdb36 psmdb40 psmdb42 psmdb44 psmdb60 psmdb50 psmdb70 psmdb80 psmdb40 psmdb60pro psmdb70pro psmdb-70-pro psmdb-60-pro psmdb-36 psmdb-40 psmdb-42 psmdb-44 psmdb-60 psmdb-50 psmdb-70 psmdb-80 psmdb40 psmdb-60-pro psmdb-70-pro psmdb-70-pro psmdb-60-pro # percona-release habilita a liberação do psmdb-80 # atualização do apt # apt install percona-server-mongodb # apt-cache madison percona-server-mongodb # ls -ltr /etc/mongod.conf -rw-r--r-- 1 root root 1403 11 de fev 23:56 /etc/mongod.conf # vi /etc/systemd/system/enable-transparent-huge-pages.service # cat /etc/systemd/system/enable-transparent-huge-pages.service [Unidade] Descrição=Habilitar páginas enormes transparentes (THP) DependênciasPadrão=não Depois=sysinit.target local-fs.target Antes=mongod.service [Serviço] Tipo=one-shot ExecStart=/bin/sh -c 'echo sempre | tee /sys/kernel/mm/transparent_hugepage/enabled > /dev/null && echo defer+madvise | tee /sys/kernel/mm/transparent_hugepage/defrag > /dev/null && echo 0 | tee /sys/kernel/mm/transparent_hugepage/khugepaged/max_ptes_none > /dev/null && echo 1 | tee /proc/sys/vm/overcommit_memory > /dev/null' [Instalar] ProcuradoPor=básico.alvo # systemctl daemon-reload # systemctl start habilitar-páginas-enormes-transparentes # cat /sys/kernel/mm/transparent_hugepage/enabled && cat /sys/kernel/mm/transparent_hugepage/defrag && cat /sys/kernel/mm/transparent_hugepage/khugepaged/max_ptes_none && cat /proc/sys/vm/overcommit_memory [sempre] madvise nunca sempre adiar [adiar+madvise] madvise nunca 0 1 # systemctl enable habilitar-páginas-enormes-transparentes # ls -lr /var/lib/mongodb/ total 0 # systemctl start mongod # status do sistema ctl mongod # mongosh ID de registro atual do Mongosh: 67ed4eb0cd874b942d98ebcf Conectando a: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+2.3.2 MongoNetworkError: conectar ECONNREFUSED 127.0.0.1:27017
MONGODB
https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-debian/
# apt-get install gnupg curl # curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \ sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg \ --querido # echo "deb [ assinado-por=/usr/share/keyrings/mongodb-server-8.0.gpg ] http://repo.mongodb.org/apt/debian bookworm/mongodb-org/8.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list # apt-get atualização # apt-get install -y mongodb-org # systemctl daemon-reload # ulimit -c ilimitado # ulimit -n 64000 # ulimit -f ilimitado # ulimit -t ilimitado # ulimit -l ilimitado # ulimit -m ilimitado # ulimit -u 64000 # ulimit -a tempo não bloqueador em tempo real (microssegundos, -R) ilimitado tamanho do arquivo principal (blocos, -c) ilimitado tamanho do segmento de dados (kbytes, -d) ilimitado prioridade de agendamento (-e) 0 tamanho do arquivo (blocos, -f) ilimitado sinais pendentes (-i) 15471 memória máxima bloqueada (kbytes, -l) ilimitada tamanho máximo de memória (kbytes, -m) ilimitado abrir arquivos (-n) 64000 tamanho do tubo (512 bytes, -p) 8 Filas de mensagens POSIX (bytes, -q) 819200 prioridade em tempo real (-r) 0 tamanho da pilha (kbytes, -s) 8192 tempo de CPU (segundos, -t) ilimitado máximo de processos de usuário (-u) 64000 memória virtual (kbytes, -v) ilimitada bloqueios de arquivo (-x) ilimitados # systemctl start mongod # wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb # dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb # percona-release --help | grep psmdb psmdb36 psmdb40 psmdb42 psmdb44 psmdb60 psmdb50 psmdb70 psmdb80 psmdb40 psmdb60pro psmdb70pro psmdb-70-pro psmdb-60-pro psmdb-36 psmdb-40 psmdb-42 psmdb-44 psmdb-60 psmdb-50 psmdb-70 psmdb-80 psmdb40 psmdb-60-pro psmdb-70-pro psmdb-70-pro psmdb-60-pro # percona-release habilita a liberação do psmdb-80 # atualização do apt # apt install percona-server-mongodb # apt-cache madison percona-server-mongodb # ls -ltr /etc/mongod.conf -rw-r--r-- 1 root root 1403 11 de fev 23:56 /etc/mongod.conf # vi /etc/systemd/system/enable-transparent-huge-pages.service # cat /etc/systemd/system/enable-transparent-huge-pages.service [Unidade] Descrição=Habilitar páginas enormes transparentes (THP) DependênciasPadrão=não Depois=sysinit.target local-fs.target Antes=mongod.service [Serviço] Tipo=one-shot ExecStart=/bin/sh -c 'echo sempre | tee /sys/kernel/mm/transparent_hugepage/enabled > /dev/null && echo defer+madvise | tee /sys/kernel/mm/transparent_hugepage/defrag > /dev/null && echo 0 | tee /sys/kernel/mm/transparent_hugepage/khugepaged/max_ptes_none > /dev/null && echo 1 | tee /proc/sys/vm/overcommit_memory > /dev/null' [Instalar] ProcuradoPor=básico.alvo # systemctl daemon-reload # systemctl start habilitar-páginas-enormes-transparentes # cat /sys/kernel/mm/transparent_hugepage/enabled && cat /sys/kernel/mm/transparent_hugepage/defrag && cat /sys/kernel/mm/transparent_hugepage/khugepaged/max_ptes_none && cat /proc/sys/vm/overcommit_memory [sempre] madvise nunca sempre adiar [adiar+madvise] madvise nunca 0 1 # systemctl enable habilitar-páginas-enormes-transparentes # ls -lr /var/lib/mongodb/ total 0 # systemctl start mongod # status do sistema ctl mongod # mongosh ID de registro atual do Mongosh: 67ed4eb0cd874b942d98ebcf Conectando a: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+2.3.2 MongoNetworkError: conectar ECONNREFUSED 127.0.0.1:27017
CASSANDRA
https://docs.vultr.com/how-to-install-apache-cassandra-on-debian-12
# atualização do apt # cat /etc/apt/source.list deb https://deb.debian.org/debian bookworm principal firmware não livre deb http://deb.debian.org/debian bookworm-updates principal deb http://deb.debian.org/debian-security bookworm-security principal deb http://deb.debian.org/debian instável principal não livre contrib # atualização do apt # apt install curl # apt install openjdk-17-jdk # java --versão openjdk 17.0.14 21/01/2025 Ambiente de execução OpenJDK (compilação 17.0.14+7-Debian-1deb12u1) VM do servidor OpenJDK de 64 bits (compilação 17.0.14+7-Debian-1deb12u1, modo misto, compartilhamento) # echo "deb [assinado por=/etc/apt/keyrings/apache-cassandra.asc] https://debian.cassandra.apache.org 41x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list # curl -o /etc/apt/keyrings/apache-cassandra.asc https://downloads.apache.org/cassandra/KEYS # atualização do apt # apt install cassandra # ls -lr /etc/cassandra/cassandra.yaml -rw-r--r-- 1 root root 91468 27 de janeiro 07:28 /etc/cassandra/cassandra.yaml # vi /etc/cassandra/cassandra.yaml # systemctl reiniciar cassandra # ls -lr /var/log/cassandra/ total 0 # status do systemctl cassandra # status do nodetool nodetool: Falha ao conectar a '127.0.0.1:7199' - ConnectException: 'Conexão recusada'. # cqlsh -u cassandra -p cassandra Aviso: Usar uma senha na interface de linha de comando pode ser inseguro. Recomendação: use o arquivo de credenciais para fornecer a senha com segurança. Erro de conexão: ('Não foi possível conectar a nenhum servidor', {'127.0.0.1:9042': ConnectionRefusedError(111, "Tentativa de conectar a [('127.0.0.1', 9042)]. Último erro: Conexão recusada")})