原因:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则改为caching_sha2_password
成都创新互联公司专注于新区网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供新区营销型网站建设,新区网站制作、新区网页设计、新区网站官网定制、微信小程序开发服务,打造新区网络公司原创品牌,更为您提供新区网站排名全网营销落地服务。
解决办法:
1、升级客户端
2、把mysql用户登录密码加密规则还原成mysql_native_password:
ALTER USER xxxx IDENTIFIED WITH mysql_native_password BY '新密码';
当初次在机器上安装完Mysql时,你可以匿名进行访问数据库或者以不带口令的root身份进入数据库.另外如果你是一个管理员,你还要进行一些用户的建立及授权,这又涉及到设置密码的问题.下面我们就讨论一下如何设置密码: 首先我们应该知道Mysql数据库中的口令存储必须用password()函数加密它.因为在user表中是以加密形式存储口令,而不是作 为纯文本.如果你没有加密,直接在数据库中执行以下语句: use mysql insert into user (host,user,password) values(’%’,’user_name’,’your password’); flush privileges; 相信结果不会让你满意.因为服务器比较的是加密的值,所以服务器连接一定失败.这里需要说明的是flush privileges;这条 命令起到了重新加载授权表.你也可以在shell下直接用mysqladmin -u root reload或者mysqladmin -u root flush-privileges来 实现重载授权表. 在Mysql环境下,你可以使用以下语句进行设置密码: 1.insert into user(host,user,password) values(’%’,’user_name’,password("your password"); 2.set password for user_name = password("your password") 以上两种方法都必须进行重载授权表. 3.当然你也可以在创建一个用户时直接设置密码,grant语句将为你自动加密口令. 如 grant all on *.* to user_name@% identified by "your password"; 另外你也可以在shell环境下用mysqladmin程序来设置密码 如 mysqladmin -u root password "your password"
使用mysql的加密函数运行:
select HEX(AES_ENCRYPT( 'test aes encrypt','123')) as aesTest
输出密文:
17CDAE577C715A0B5A922BF07462622AF15884B6D0F596B0241DC8F966C4A93F
官方文档解释:
The block_encryption_mode system variable controls the mode for block-based encryption algorithms. Its default value is font color="red" aes-128-ecb /font, which signifies encryption using a key length of 128 bits and ECB mode. For a description of the permitted values of this variable, see Section 5.1.8, “Server System Variables” .
在线加密验证 :
该网加密结果为:
17cdae577c715a0b5a922bf07462622af15884b6d0f596b0241dc8f966c4a93f
与mysql加密结果一致,只是大小写差异。
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款