AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 332624
Accepted
Jim isaac
Jim isaac
Asked: 2023-10-30 01:27:44 +0800 CST2023-10-30 01:27:44 +0800 CST 2023-10-30 01:27:44 +0800 CST

Explicação da conexão Mysql SSL para usuários criados com “REQUIRE SSL”

  • 772

Estou tentando entender o funcionamento do SSL ao tentar me conectar a um servidor MySQL (via mysql-connector-python). Tenho MySQL (v5.7) e tenho 2 usuários. Um (root) é o usuário padrão e o outro usuário (ssl_user) tem a opção REQUIRE SSL habilitada. Se eu tentar me conectar ao ssl_user com a seguinte configuração, recebo um erro dizendo que ssl_user não tem acesso.

mysql_conf = {
    'host': '127.0.0.1',
    'port': '3306',
    'user': 'root',
    'password': '',
    'ssl_disabled': True #Default value is False    
}
conn = mysql.connector.connect(**mysql_conf)

Consigo me conectar ao MySQL se alterar o valor como 'ssl_disabled': False para o usuário específico.

Estou me conectando ao servidor mysql por meio do meu aplicativo flask. O que exatamente acontece ao me conectar por meio deste usuário criado com Require SSL? isso significa que a conexão deste usuário está criptografada? em caso afirmativo, onde acontece a criptografia?

Não consigo entender qual é exatamente a diferença entre conexão via 'ssl_disabled': False e conexão fornecendo certificados SSL?

mysql
  • 1 1 respostas
  • 73 Views

1 respostas

  • Voted
  1. Best Answer
    Bill Karwin
    2023-10-30T04:36:11+08:002023-10-30T04:36:11+08:00

    O conector Python prefere usar SSL por padrão ou, se você definir ssl_disabled=False.

    Infelizmente, isso é um duplo negativo. Significa que você não desabilitou o SSL, portanto ele está habilitado. Teria ficado mais claro se eles tivessem seguido a convenção de outros clientes MySQL que usam ssl-mode, definido como 'DISABLED', 'PREFERRED', 'REQUIRED', 'VERIFY_CA', 'VERIFY_IDENTITY'.

    Os usuários do MySQL, por padrão, podem se conectar via TCP com uma conexão SSL criptografada ou uma conexão não criptografada. Ao definir seu usuário com REQUIRE SSL, o usuário não poderá se conectar se o SSL não estiver ativado.

    A criptografia acontece na biblioteca cliente MySQL, que o conector Python chama. É aí que o protocolo MySQL é implementado. Muitos outros clientes usam a mesma biblioteca cliente MySQL, como clientes Ruby, PHP, Perl ou C++.

    Posso testar um usuário semelhante ao seu com o cliente de linha de comando MySQL, que também usa a mesma biblioteca cliente.

    Criei meu usuário:

    mysql> create user testy@'%' require ssl;
    

    Então, em outra janela, tentei conectar-me a partir de um prompt do shell:

    % mysql -utesty -h 127.0.0.1 -p --ssl-mode DISABLED
    Enter password: 
    ERROR 1045 (28000): Access denied for user 'testy'@'localhost' (using password: NO)
    

    Isso é o esperado. Se o usuário estiver definido para exigir SSL e o cliente tentar se conectar com o SSL desativado, esse usuário não poderá se conectar.

    % mysql -utesty -h 127.0.0.1 -p --ssl-mode PREFERRED
    Enter password: 
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    ...
    mysql> status
    ...
    SSL:            Cipher in use is TLS_AES_128_GCM_SHA256
    

    O status informa que a sessão atual está usando SSL, nomeando a cifra em uso. Se eu não estivesse conectado via SSL, diria "Não em uso" para a cifra SSL.

    Os certificados são opcionais. Os certificados são para autenticação segura. Você pode usar uma conexão SSL para criptografar os pacotes, sem usar certificados. Existem opções separadas na instrução MySQL CREATE USER para exigir que um usuário seja autenticado com um certificado, mas a maioria das pessoas não se preocupa com isso. Trabalhei em uma empresa onde usamos certificados em vez de senhas para usuários do MySQL. Isso era muito seguro, mas exigia que a empresa tivesse sua própria autoridade de certificação (CA) para criar um certificado exclusivo para cada usuário do MySQL (eles usavam certificados para muitas coisas dentro da empresa, não apenas para o MySQL).

    • 3

relate perguntas

  • Existem ferramentas de benchmarking do MySQL? [fechado]

  • Onde posso encontrar o log lento do mysql?

  • Como posso otimizar um mysqldump de um banco de dados grande?

  • Quando é o momento certo para usar o MariaDB em vez do MySQL e por quê?

  • Como um grupo pode rastrear alterações no esquema do banco de dados?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve