Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O go-mssqldb driver é uma biblioteca puramente Go e compila nativamente em Linux e macOS sem dependências externas de C. Este artigo aborda a configuração específica da plataforma para autenticação e certificados.
Installation
A instalação é a mesma em todas as plataformas:
go get github.com/microsoft/go-mssqldb
Não são necessários drivers ODBC, FreeTDS ou outras bibliotecas C.
Autenticação do SQL
A autenticação SQL funciona de forma idêntica no Linux, macOS e Windows:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025
Autenticação NTLM
A autenticação NTLM é suportada em todas as plataformas. Forneça um nome de utilizador qualificado para domínio:
Formato do URL
Codifica URL a barra inversa em DOMAIN\user como %5C:
sqlserver://CONTOSO%5C<user>:<password>@<server>:1433?database=mydb
Formato ADO
A barra diagonal no nome de utilizador desencadeia a autenticação NTLM:
server=<server>;user id=DOMAIN\<user>;password=<password>;database=AdventureWorks2025
O controlador deteta a barra invertida no nome de utilizador e utiliza automaticamente o NTLM. Não é necessária qualquer configuração adicional no Linux ou macOS.
Autenticação Kerberos
A autenticação Kerberos no Linux e macOS utiliza o krb5 pacote incorporado no driver. Não existem dependências externas de bibliotecas.
Prerequisites
Um ficheiro de configuração válido do Kerberos. O caminho padrão é
/etc/krb5.conf:[libdefaults] default_realm = MYDOMAIN.COM dns_lookup_kdc = true [realms] MYDOMAIN.COM = { kdc = dc1.mydomain.com }A instância do SQL Server deve ter um Nome Principal de Serviço (SPN) registado (por exemplo,
MSSQLSvc/<server>.mydomain.com:1433).
Liga-te com um keytab
Especifique o caminho do ficheiro keytab e o domínio Kerberos na cadeia de ligação:
sqlserver://<user>@MYDOMAIN.COM@<server>:1433?database=AdventureWorks2025&krb5-realm=MYDOMAIN.COM&krb5-keytabfile=/etc/<user>.keytab
Liga-te a uma cache de credenciais
Primeiro, obtenha um bilhete:
kinit <user>@MYDOMAIN.COM
Depois liga-te usando a credencial em cache:
sqlserver://<user>@MYDOMAIN.COM@<server>:1433?database=AdventureWorks2025&krb5-realm=MYDOMAIN.COM&krb5-credcachefile=/tmp/krb5cc_1000
Parâmetros de Kerberos
| Parâmetro | Predefinição | Description |
|---|---|---|
krb5-configfile |
/etc/krb5.conf |
Caminho para o ficheiro de configuração do Kerberos. |
krb5-realm |
- | Reino de Kerberos (por exemplo, MYDOMAIN.COM). |
krb5-keytabfile |
- | Caminho para o ficheiro keytab. |
krb5-credcachefile |
- | Caminho para o ficheiro de cache de credenciais. |
krb5-dnslookupkdc |
true |
Utilize registos DNS SRV para encontrar o Centro de Distribuição de Chaves (KDC). |
krb5-udppreferencelimit |
1 |
Tamanho máximo da mensagem UDP antes de mudar para TCP. |
Para mais informações, consulte SQL Server e Windows authentication.
A autenticação do Windows (SSPI) não está disponível
No Linux e macOS, a autenticação integrada do Windows (SSPI / trusted_connection=yes) não está disponível. Use uma das seguintes alternativas:
| Método | Cadeia de ligação |
|---|---|
| NTLM | sqlserver://DOMAIN%5Cuser:password@host?database=db |
| Kerberos (keytab) | sqlserver://user@REALM@host?database=db&krb5-realm=REALM&krb5-keytabfile=/path |
| Kerberos (cache) | sqlserver://user@REALM@host?database=db&krb5-realm=REALM&krb5-credcachefile=/path |
| Autenticação SQL | sqlserver://user:password@host?database=db |
| Microsoft Entra ID |
sqlserver://host?database=db&fedauth=ActiveDirectoryDefault&encrypt=true&TrustServerCertificate=false (use o controlador azuresql) |
Configuração do certificado
No Linux e macOS, os certificados TLS usados com os certificate parâmetros ou serverCertificate devem ser ficheiros codificados em PEM. O controlador lê-os usando diretamente o pacote crypto/tls do Go.
Repositório de confiança do sistema
O driver utiliza o armazenamento de certificados padrão do sistema operativo. No Linux, este repositório de certificados fidedignos situa-se normalmente em /etc/ssl/certs/ ou /etc/pki/tls/certs/. No macOS, utiliza-se o chaveiro do sistema.
Para adicionar um certificado CA personalizado à loja do sistema:
Ubuntu/Debian:
sudo cp myca.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
RHEL/Fedora:
sudo cp myca.crt /etc/pki/ca-trust/source/anchors/
sudo update-ca-trust
macOS:
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain myca.crt
Em alternativa, use o certificate parâmetro de ligação para especificar diretamente o certificado da CA sem modificar o armazenamento do sistema:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=true&certificate=/path/to/ca-cert.pem