Guia completo: Instalação e configuração do SQL Server no Linux
O que é SQL Server?
O SQL server é um sistema gerenciador de banco de dados relacional, mantido pela Microsoft. Originalmente estava disponível apenas para distribuições Windows, como o Windows Server.
Desde a versão do SQL Server 2017 também é possível instalá-lo no Linux e em Docker.
A versão developer
É uma edição gratuita e completa do SQL server, para desenvolvimento e testes em ambientes não produtivos. Você pode instalar e utilizá-lo em ambientes Windows e Linux.
Requisitos de sistema
Estes são os principais requisitos para rodar o SQL Server no Linux.
Caso algum não seja satisfatório, o processo de instalação não será concluído.
Recurso | Requisito |
---|---|
Memória | 2 GB |
Sistema de Arquivos | XFS ou EXT4 |
Espaço em Disco | 6 GB |
Velocidade do Processador | 2 GHz |
Núcleos | 2 núcleos |
Arquitetura | Somente x64 |
Para maiores informações de Requisitos, acesse a documentação oficial.
Distribuições disponíveis
As distribuições compatíveis são:
- Red Hat Enterprise Linux (RHEL)
- SUSE Linux Enterprise Server (SLES)
- Ubuntu
- Docker
Instalação
O processo de instalação do SQL Server no Linux é rápido e prático. Há um guia para instalação, conforme a distribuição, no site oficial da microsoft.
Neste Post, será demonstrado a instalação no Centos8.
Preparação do ambiente
O CentOS 8, não contém o pacote python2 pré-instalado. O mesmo é necessário para o SQLServer.
Você pode verificar o interpretador padrão com o comando:
sudo alternatives --config python
Caso não contenha o pacote, basta instalar com o seguinte comando:
sudo yum install python2 compat-openssl10
Posteriormente, configure o interpretador padrão com o comando:
sudo alternatives --config python
Baixe o repositório oficial da microsoft para o RHEL 8. Caso a sua distribuição da Red Hat seja diferente, você pode editar o link abaixo para a distribuição correta.
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2019.repo
Instale o pacote do mssql-server
sudo yum install -y mssql-server
Inicie a instalação da instância:
Observação: No Linux não há instâncias nomeadas, sendo uma instância em cada servidor.
sudo /opt/mssql/bin/mssql-conf setup
Neste passo você deve escolher uma edição para instalação (tanto as versões pagas quanto as gratuitas estão no mesmo pacote). Instalaremos a edição desenvolvedor (Developer).
Aceite os termos de licença
Por fim, defina uma senha para o usuário sa.
A senha precisa ter:
- No mínimo 8 caracteres
- Letras maiúsculas e minúsculas
- Digitos na base 10 e/ou símbolos não alfanuméricos.
Caso tenha executado com sucesso, é possível verificar o status da instância com o comando:
systemctl status mssql-server
(Extra) Para aceitar conexões TCP, caso o seu firewallD esteja habilitado, é necessário liberar a porta 1433 (Padrão do SQL Server). O mesmo pode ser feito com a sequência de comandos:
sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent sudo firewall-cmd --reload
A partir deste momento o seu servidor está pronto e aceitando conexões externas!
Diretórios do SQL Server
Os arquivos do SQL Server estão segregados em 2 diretórios principais:
- Binários e bibliotecas: /opt/mssql/
[vagrant@localhost ~]$ cd /opt/mssql/ [vagrant@localhost mssql]$ ls bin lib
- O diretório bin contém os binários necessários para a execução do SQL Server
- Já o diretório lib contém as bibliotecas padrão.
- Arquivos de dados e logs: /var/opt/mssql
[root@localhost ~]# cd /var/opt/mssql [root@localhost mssql]# ls data log mssql.conf secrets
- O diretório data contém os arquivos de dados (.MDF) e os arquivos de LOG (.LDF), de cada database;
- Assim como Windows, é possível criar bases de dados com arquivos .LDF e .MDF em outros diretórios, desde que o usuário mssql seja capaz de acessá-los;
- O diretório log contém o log de erros, logs do agent e alguns outros logs de sistema.
- O arquivo mssql.conf contém algumas definições básicas da instância. Este não é um arquivo completo como em outros SGBDS, que permitem alterar porta, endereços de IP etc.
- O diretório secrets contém as chaves utilizadas na instância, como por exemplo a chave do host.
Programas para acessar a instância
O SQL Server Management Studio não está disponível para distribuições linux (Apesar de ser completamente compatível a conexão via Windows em um servidor SQL Server Linux). Para distribuições Linux, é possível utilizar o Azure Data Studio ou qualquer outro programa que tenha compatibilidade com o SQLServer, como por exemplo o DBeaver.
Para utilizar o SQL Server via linha de comando, é necessário instalar o pacote mssql-tools, com os seguintes comandos:
Adicione o repositório oficial da Microsoft: Caso a sua distribuição da Red Hat seja diferente, você pode editar o link abaixo para a distribuição correta:
sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/8/prod.repo
Instale o pacote mssql-tools e o pacote unixODBC-devel
sudo yum install -y mssql-tools unixODBC-devel
Para facilitar o acesso, adicione os binários instalados na variável de ambiente PATH:
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc source ~/.bashrc
Conectando-se a instância:
sqlcmd -S localhost -U SA -P 'Sua_Senha'
Os parâmetros são:
- S: Hostname do SQLServer
- -U: Usuário
- -P: Senha (você pode omitir o parâmetro que será solicitado posteriormente)
A lista completa de parâmetros pode ser acessada utilizando:
sqlcmd -?
Observação: Os comandos do SQLServer só serão processados após a instrução: GO
Criando uma database
Para criar uma database, digite o comando:
CREATE DATABASE DB_FOUR_LINUX; GO
Conectando-se á base de dados e populando um registro:
USE DB_FOUR_LINUX; GO Changed database context to 'DB_FOUR_LINUX'. CREATE TABLE TB_ALUNO (ID INT IDENTITY(1,1), NOME VARCHAR(200)); GO INSERT INTO TB_ALUNO VALUES ( 'VITOR'); GO (1 rows affected) SELECT * FROM TB_ALUNO; GO ID NOME ------- --------------------- 1 VITOR (1 rows affected)
Verificando os arquivos de dados
Acesse o diretório da instância e em /var/opt/mssql/data e veja o diretório de dados
sudo ls -lha /var/opt/mssql/data/DB_FOUR_LINUX* -rw-rw----. 1 mssql mssql 8.0M Dec 7 00:14 DB_FOUR_LINUX.mdf -rw-rw----. 1 mssql mssql 8.0M Dec 7 00:14 DB_FOUR_LINUX_log.ldf
Verificando o backup
sudo ls -lha /var/opt/mssql/backup total 2.8M drwxrwx---. 2 mssql mssql 31 Dec 7 00:17 . drwxrwx---. 7 mssql mssql 91 Dec 7 00:17 .. -rw-rw----. 1 mssql mssql 2.8M Dec 7 00:17 DB_FOUR_LINUX.bak
Restaurando a base de dados em outro diretório
O processo de restore também é o mesmo do Windows.
A diferença está apenas no local do restore.
RESTORE DATABASE DB_FOUR_LINUX_RESTORE FROM DISK = '/var/opt/mssql/backup/DB_FOUR_LINUX.bak' WITH RECOVERY, MOVE 'DB_FOUR_LINUX' TO '/var/opt/mssql/novo_dir/DB_FOUR_LINUX.mdf', MOVE 'DB_FOUR_LINUX_log' TO '/var/opt/mssql/novo_dir/DB_FOUR_LINUX.ldf'; GO Processed 336 pages for database 'DB_FOUR_LINUX_RESTORE', file 'DB_FOUR_LINUX' on file 1. Processed 2 pages for database 'DB_FOUR_LINUX_RESTORE', file 'DB_FOUR_LINUX_log' on file 1. RESTORE DATABASE successfully processed 338 pages in 0.121 seconds (21.791 MB/sec).
Verificando o novo diretório
RESTORE DATABASE DB_FOUR_LINUX_RESTORE FROM DISK = '/var/opt/mssql/backup/DB_FOUR_LINUX.bak' WITH RECOVERY, MOVE 'DB_FOUR_LINUX' TO '/var/opt/mssql/novo_dir/DB_FOUR_LINUX.mdf', MOVE 'DB_FOUR_LINUX_log' TO '/var/opt/mssql/novo_dir/DB_FOUR_LINUX.ldf'; go Processed 336 pages for database 'DB_FOUR_LINUX_RESTORE', file 'DB_FOUR_LINUX' on file 1. Processed 2 pages for database 'DB_FOUR_LINUX_RESTORE', file 'DB_FOUR_LINUX_log' on file 1. RESTORE DATABASE successfully processed 338 pages in 0.121 seconds (21.791 MB/sec).
Verificando os dados restaurados
Conecte-se á instância e verifique se o registros inserido está disponível.
USE DB_FOUR_LINUX_RESTORE; GO Changed database context to 'DB_FOUR_LINUX_RESTORE'. SELECT * FROM TB_ALUNO; GO ID NOME ------- --------------------- 1 VITOR (1 rows affected)
Boas práticas de tunning e performance
A Microsoft disponibilizou uma página dedicada a melhores práticas de configuração e performance do SQL Server no Linux, disponível na documentação oficial.
Viu como é simples?
O processo de instalação do sql server no Linux é totalmente simples e compatível com todos os tipos de licença, a partir do SQL Server 2017.
Por ser uma comunicação via TCP/IP, é totalmente compatível também a conexão de um cliente Windows e um SQL Server no Linux, assim como o contrário.
O SQL Server é um software proprietário, então verifiquem a licença de usuário antes da sua utilização. Nunca utilizem a versão developer em ambientes produtivos.
Líder em Treinamento e serviços de Consultoria, Suporte e Implantação para o mundo open source. Conheça nossas soluções:
About author
Você pode gostar também
Guia completo para instalar e configurar o Nextcloud em seu sistema
O que é Nextcloud? O Nextcloud é uma aplicação OpenSource (Código Aberto) para armazenamento de arquivos/pastas entre grupos e usuários em nuvem, sendo acessível tanto por um navegador ou client
Domine técnicas de intrusão com o curso de Segurança da Informação
Seguindo a tendência do que ocorreu com outros cursos ao longo do ano, o foco chegou na área de Segurança da Informação, onde modernizamos o curso “PenTest: Técnicas de Intrusão
Avaliando a Segurança em Ambientes Kubernetes com Kubeaudit
Essa é a segunda parte falando de segurança em ambientes Kubernetes. Caso você ainda não tenha visto a Parte 1, fique a vontade para clicar no link abaixo: No post