MySQL的密码加密方式主要由认证插件控制,不同版本的MySQL默认使用的加密方式有所不同。比如MySQL 5.7默认使用mysql_native_password,而MySQL 8.0开始默认使用caching_sha2_password。如果你需要修改密码加密方式或更新用户密码并指定加密方式,可以按照以下方法操作。
查看当前用户的认证方式
要确认某个用户当前使用的密码加密方式,可以通过以下SQL语句查询:
<font color="#006400"> SELECT user, host, plugin FROM mysql.user WHERE user = 'your_username'; </font>
返回结果中的plugin字段表示该用户使用的认证插件,常见的有:
mysql_native_password:旧版SHA1加密,兼容性好 caching_sha2_password:MySQL 8.0默认,更安全 sha256_password:基于SSL或RSA的SHA-256加密修改用户的密码加密方式
如果你想更改某个用户的认证方式并同时设置新密码,可以使用ALTER USER语句。
例如,将用户myuser从默认的caching_sha2_password改为mysql_native_password:
<font color="#006400"> ALTER USER 'myuser'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_secure_password'; </font>
如果用户是远程访问,注意替换localhost为对应的host,如'%'或具体IP。
执行后刷新权限:
<font color="#006400"> FLUSH PRIVILEGES; </font>
创建用户时指定加密方式
在创建新用户时也可以直接指定认证插件:
<font color="#006400"> CREATE USER 'newuser'@'%' IDENTIFIED WITH mysql_native_password BY 'password123'; </font>
这样可确保兼容老客户端或特定应用的需求。
全局默认认证插件设置(可选)
如果你希望所有新用户都使用某种加密方式,可以在MySQL配置文件my.cnf或my.ini中设置默认插件:
<font color="#006400"> [mysqld] default_authentication_plugin=mysql_native_password </font>
修改后需重启MySQL服务生效。注意:这仅影响之后创建的用户。
基本上就这些。修改加密方式的核心是使用IDENTIFIED WITH语法指定plugin,并结合ALTER USER或CREATE USER操作。只要权限足够,过程并不复杂但容易忽略host匹配问题。
