赞
踩
C:\Users\dgq>mysql --version
mysql Ver 8.0.26 for Win64 on x86_64 (MySQL Community Server - GPL)
解决方法: 一种是升级SQLyog和Navicat(新版SQLyog和Navicat不会出现此问题),另一种是把MySQL用户登录密码加密规则还原成mysql_native_password。
C:\Users\dgq>mysql -uroot -p
Enter password: ******
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.26 MySQL Community Server - GPL
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show grants;
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for root@localhost |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `root`@`localhost` WITH GRANT OPTION |
| GRANT APPLICATION_PASSWORD_ADMIN,AUDIT_ADMIN,BACKUP_ADMIN,BINLOG_ADMIN,BINLOG_ENCRYPTION_ADMIN,CLONE_ADMIN,CONNECTION_ADMIN,ENCRYPTION_KEY_ADMIN,FLUSH_OPTIMIZER_COSTS,FLUSH_STATUS,FLUSH_TABLES,FLUSH_USER_RESOURCES,GROUP_REPLICATION_ADMIN,INNODB_REDO_LOG_ARCHIVE,INNODB_REDO_LOG_ENABLE,PERSIST_RO_VARIABLES_ADMIN,REPLICATION_APPLIER,REPLICATION_SLAVE_ADMIN,RESOURCE_GROUP_ADMIN,RESOURCE_GROUP_USER,ROLE_ADMIN,SERVICE_CONNECTION_ADMIN,SESSION_VARIABLES_ADMIN,SET_USER_ID,SHOW_ROUTINE,SYSTEM_USER,SYSTEM_VARIABLES_ADMIN,TABLE_ENCRYPTION_ADMIN,XA_RECOVER_ADMIN ON *.* TO `root`@`localhost` WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
3 rows in set (0.00 sec)
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
在MySQL中,ALTER USER
语句用于修改用户账户的属性,包括密码、密码加密方式等。你提供的命令:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
这条命令的作用是:
root
,主机名为localhost
的用户的密码。mysql_native_password
。123456
。这个命令特别有用在MySQL 8.0及更高版本中,因为MySQL 8.0默认使用caching_sha2_password
作为密码认证插件,而一些旧的应用程序或库可能不支持这种认证方式,需要使用mysql_native_password
来兼容。
在执行这条命令之前,请确保你拥有足够的权限来修改用户账户,并且MySQL服务正在运行。
如果你遇到权限问题,可能需要以root
用户(或具有足够权限的用户)的身份登录MySQL服务器。
如果你正在尝试通过命令行执行这条SQL命令,你需要首先登录到MySQL服务器,然后执行这条命令。例如:
mysql -u root -p
然后输入你的当前密码(如果之前没有设置密码,可能会直接登录),登录成功后,在MySQL命令行界面执行:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
执行成功后,你应该会看到一条消息表明查询已执行成功,现在你可以使用新密码123456
以mysql_native_password
加密方式登录root
@localhost
用户了。
最后,请注意,出于安全考虑,建议不要在生产环境中使用简单的密码,如123456
。使用更复杂且难以猜测的密码来保护你的数据库。
mysql_native_password
翻译成中文通常可以表述为“MySQL 原生密码认证插件”。在 MySQL 数据库中,认证插件用于验证用户登录时的身份和权限。mysql_native_password
是 MySQL 默认使用的认证插件之一,它实现了传统的 MySQL 密码加密和验证方法。
随着 MySQL 的发展,出现了其他认证插件,如 caching_sha2_password
、sha256_password
等,这些插件提供了更强的密码验证和加密机制。然而,由于 mysql_native_password
已经在 MySQL 中使用了很长时间,并且被广泛支持,因此它仍然是许多 MySQL 安装和应用程序中的首选认证插件。
简单来说,mysql_native_password
就是 MySQL 用来确保用户密码安全,并在用户尝试连接到数据库时进行身份验证的一个标准插件。
mysql_native_password
插件是 MySQL 数据库在不同版本中的默认身份验证插件情况有所不同。以下是关于 mysql_native_password
作为默认插件的版本信息:
MySQL 5.7 及之前版本:
mysql_native_password
是默认的身份验证插件。这个插件使用 MySQL 自己的密码哈希算法,将用户提供的密码与存储在数据库中的密码哈希进行比较,以验证用户的身份。MySQL 8.0 及以后版本:
caching_sha2_password
。这个插件使用 SHA-256 算法对密码进行哈希,并支持将哈希值缓存到服务器内存中,以提高验证效率。然而,尽管 caching_sha2_password
成为了默认的认证插件,但 MySQL 8.0 仍然支持 mysql_native_password
,并且允许用户根据需要更改现有用户或新用户的认证插件。在 MySQL 8.0 及以后版本中,如果需要将用户的认证插件从 caching_sha2_password
更改为 mysql_native_password
,可以使用 ALTER USER
命令。例如:
ALTER USER 'username'@'hostname' IDENTIFIED WITH mysql_native_password BY 'new_password';
在这个命令中,'username'@'hostname'
是要修改的用户账户,'new_password'
是用户的新密码。
caching_sha2_password
插件,但可能需要与 MySQL 8.0 或更高版本的数据库交互。综上所述,mysql_native_password
是 MySQL 5.7 及之前版本的默认身份验证插件,而在 MySQL 8.0 及以后版本中,默认插件被更改为 caching_sha2_password
。但用户仍然可以根据需要更改认证插件。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。