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 / 209514
Accepted
d a i s y
d a i s y
Asked: 2018-06-14 02:19:43 +0800 CST2018-06-14 02:19:43 +0800 CST 2018-06-14 02:19:43 +0800 CST

O que é mysql_native_password?

  • 772

Eu estava tentando definir a senha para root. Quando eu corro:

mysql> SELECT * from mysql.user where User="root";

Isto mostra:

+-----------+------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+------------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+-----------------------+-----------------------+------------------+-----------------------+-------------------+----------------+
| Host      | User | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Reload_priv | Shutdown_priv | Process_priv | File_priv | Grant_priv | References_priv | Index_priv | Alter_priv | Show_db_priv | Super_priv | Create_tmp_table_priv | Lock_tables_priv | Execute_priv | Repl_slave_priv | Repl_client_priv | Create_view_priv | Show_view_priv | Create_routine_priv | Alter_routine_priv | Create_user_priv | Event_priv | Trigger_priv | Create_tablespace_priv | ssl_type | ssl_cipher | x509_issuer | x509_subject | max_questions | max_updates | max_connections | max_user_connections | plugin                | authentication_string | password_expired | password_last_changed | password_lifetime | account_locked |
+-----------+------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+------------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+-----------------------+-----------------------+------------------+-----------------------+-------------------+----------------+
| localhost | root | Y           | Y           | Y           | Y           | Y           | Y         | Y           | Y             | Y            | Y         | Y          | Y               | Y          | Y          | Y            | Y          | Y                     | Y                | Y            | Y               | Y                | Y                | Y              | Y                   | Y                  | Y                | Y          | Y            | Y                      |          |            |             |              |             0 |           0 |               0 |                    0 | mysql_native_password |                       | N                | 2018-06-13 15:11:59   |              NULL | N              |
+-----------+------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+------------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+-----------------------+-----------------------+------------------+-----------------------+-------------------+----------------+

Este Documento diz que,

O plugin de autenticação nativa mysql_native_password é compatível com versões anteriores. Clientes mais antigos que não suportam plug-ins de autenticação usam o protocolo de autenticação nativo, para que possam se conectar a servidores que suportam autenticação conectável.

Mas tecnicamente não estou conseguindo muito. Tem que fazer alguma coisa com roota senha do usuário?

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<password>';

e

ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';

Faz alguma diferença?

authentication mysql-5.7
  • 1 1 respostas
  • 147737 Views

1 respostas

  • Voted
  1. Best Answer
    jynus
    2018-06-14T03:54:23+08:002018-06-14T03:54:23+08:00

    Por muito tempo, o MySQL tem suportado diferentes plugins de autenticação , basicamente pedaços de código programáveis ​​para demonstrar que uma conta mysql é de propriedade de quem afirma isso.

    A maneira original de fazer isso é configurar uma senha, fazer o hash de uma maneira específica e armazená-la na tabela mysql.user. No entanto, não é a única maneira de autenticar, por exemplo:

    • A autenticação de soquete unix permite que o login seja usado na máquina local com o mesmo nome unix que a conta mysql. Isso é comumente usado para contas de administrador para coisas como monitoramento ou outras tarefas sem a necessidade de manter uma senha. Ele tem esse nome porque só funciona com conexões de soquete (não remotamente)
    • Um plug-in de autenticação do PAM permite configurar, por exemplo, um sistema baseado em LDAP e usá-lo para autenticar (é bom integrá-lo a uma organização existente)
    • As últimas versões do mysql (8.0) usam um método de autenticação menos trivial ( caching_sha2_password), que em teoria é mais seguro (não estou dizendo que é ou não é, mas certamente o padrão "nativo" era muito ruim), mas pode exigem atualizações de drivers e aplicativos clientes, para que você sempre possa reverter para o mais antigo por motivos de compatibilidade.

    No mundo "Enterprise", muitas vezes há necessidades especiais de métodos de autenticação muito especiais, além de um usuário e senha.

    Basicamente, mysql_native_password é o método tradicional de autenticação - não é muito seguro (usa apenas um hash da senha), mas é compatível com drivers mais antigos . Se você for iniciar um novo serviço mysql, provavelmente desejará usar o novo plugin desde o início (e TLS). Se você tiver necessidades especiais, pode usar outro método - você pode até programar um se tiver certas necessidades especiais).

    Você pode escolher um método diferente para cada usuário individual - por exemplo, seus aplicativos normais podem usar mysql_native_password ou o novo sha2, mas você pode garantir que suas contas de administrador usem um token de autenticação de 2 fatores e unix_socket para um usuário de monitoramento coletando estatísticas no servidor mysql. Esses outros métodos de autenticação podem ou não usar o campo de senha na tabela mysql.user, como o nativo faz (eles podem armazenar a senha em outro lugar, ou podem nem mesmo ter um conceito de senha!).

    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<password>';
    

    e

    ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';
    

    São essencialmente os mesmos, mysql_native_password é normalmente o método de autenticação padrão. Com WITHvocê pode decidir qual método usar. Por exemplo, se você usar GRANT USAGE ON *.* TO root@localhost IDENTIFIED WITH socket_auth, você está configurando esse usuário para usar a autenticação de soquete unix. MariaDB usa uma sintaxe ligeiramente diferente: VIA unix_socket. A execução desses comandos resulta principalmente em uma atualização da tabela mysql.user.

    Nota ALTER/ GRANTfunciona automaticamente no próximo login do usuário, enquanto UPDATEo comando direto da tabela mysql.user pode exigir um FLUSH PRIVILEGES, e tem alguns problemas em certos cenários (Galera, etc.).

    • 40

relate perguntas

  • Conceder acesso a qualquer usuário logado para banco de dados comum

  • Existem razões objetivas para preferir um prefixo a um sufixo para um login específico do ambiente?

  • Um nome de usuário e senha podem ser codificados em um DSN do sistema

  • Auditoria de logins no banco de dados MySQL

  • Posso usar o OpenLDAP para autenticar usuários no Oracle?

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