如何将 mysql 身份验证从 mysql_native_password 迁移到 caching_sha2_password?

How to migrate mysql authentication from mysql_native_password to caching_sha2_password?

提问人:membersound 提问时间:8/7/2023 更新时间:8/7/2023 访问量:166

问:

到目前为止,我只使用身份验证,无论是来自应用程序还是 bash 脚本,如下所示。mysql_native_passwordjava

application.properties:

spring.datasource.username=root
spring.datasource.password=rootpw

或原生 bash 脚本:

export MYSQL_PWD=rootpw; mysql --user=root --database=mytable -e "INSERT INTO mytable VALUES(...)"

问:如何迁移这些应用程序,但仍然能够使用上述用户名/密码组合对应用程序进行身份验证?caching_sha2_password

Java MySQL 的Linux

评论


答:

1赞 Freeman 8/7/2023 #1

首先打开你的MySQL配置,即或,然后在部分下写如下:my.cnfmy.ini[mysqld]

default_authentication_plugin=caching_sha2_password

现在使用root帐户转到MySQL服务器并编写以下SQL命令:

ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'root_password';

并在您的 Spring Boot 中输入如下:application.properties

spring.datasource.username=root
spring.datasource.password=root_password

最后,对于原生 Bash 脚本,只需使用环境变量!MYSQL_PWD

像这样的东西:

export MYSQL_PWD=rootpw; mysql --user=root --database=mytable -e "INSERT INTO mytable VALUES(...)"

评论

0赞 membersound 8/7/2023
所以最后我基本上只需要用语句为我现有的用户更改身份验证插件,而应用程序不必修改?ALTER USER
1赞 Freeman 8/7/2023
是的,您只需要使用该语句为现有用户更新身份验证插件,应用程序就可以继续使用用户名/密码组合与MySQL服务器进行身份验证,而无需进行任何修改!ALTER USER