完美解决:MySQL8报错:Public Key Retrieval is not allowed

已解决:MySQL8报错:Public Key Retrieval is not allowed

目录

1.问题描述

 2.解决过程

方案一:

方案二:


1.问题描述

连接MySQL数据库的时候,报错内容如下:“Public Key Retrieval is not allowed”。

 2.解决过程

mysql 8.0 默认使用 caching_sha2_password 身份验证机制 (即从原来mysql_native_password 更改为 caching_sha2_password。)

从 5.7 升级 8.0 版本的不会改变现有用户的身份验证方法,但新用户会默认使用新的 caching_sha2_password 。 客户端不支持新的加密方式。 修改用户的密码和加密方式。

方案一:

在命令行模式下进入mysql,输入以下命令:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';

或者 

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';

然后就可以正常连接了。

方案二:

在配置数据源的时候直接将属性allowPublicKeyRetrieval设置为true即可

 把我工作中遇到的问题和解决的问题的过程记录下来,同时希望也可以帮到大家!

1. 解题思路: 将用户输入的数字进行取模运算,可以得到其个位、十位、百位等数字。然后再将这些数字按逆序输出即可。 代码实现: ``` num = int(input("请输入一个不多于5位的自然数:")) a = num // 100 # 百位数 b = num // 10 % 10 # 十位数 c = num % 10 # 个位数 print("百位数为:", a) print("十位数为:", b) print("个位数为:", c) print("逆序输出为:", str(c)+str(b)+str(a)) ``` 2. 解题思路: 使用`random`模块生成两个随机整数,进行加法运算并提示用户输入答案,判断是否正确并计算用时。重复进行5次,统计正确题数和用时即可。 代码实现: ``` import random import time correct_count = 0 # 正确题数 start_time = time.time() # 开始时间 for i in range(5): a = random.randint(1, 100) b = random.randint(1, 100) result = a + b print(f"第{i+1}题:{a} + {b} = ", end="") user_input = int(input()) if user_input == result: print("恭喜你,答对了!") correct_count += 1 else: print("很遗憾,答错了!") end_time = time.time() # 结束时间 time_used = round(end_time - start_time, 2) # 用时 print(f"你总共答对了{correct_count}道题,用时{time_used}秒。") ``` 3. 解题思路: 使用循环计算每月还款后剩余的贷款金额,当剩余金额小于每月还款额时,即表示还清了贷款。需要注意的是,计算过程中需要将月利率转化为实际利率,并进行四舍五入。 代码实现: ``` d = 30000 # 贷款金额 p = 6000 # 每月还款额 r = 0.01 # 月利率 month_count = 0 # 还款月数 while d > 0: interest = d * r # 月利息 d = d + interest - p # 剩余贷款金额 month_count += 1 month_count = round(month_count - 0.1) # 取小数点后一位,对第2位按四舍五入处理 print(f"需要{month_count}个月才能还清贷款。") ``` 4. 解题思路: 遍历英语单词的每个字母,将其转化为ASCII码表示的数字,再将其加上4,最后转化为对应的字符即可。 代码实现: ``` word = input("请输入一个英文单词:") cipher = "" for char in word: ascii_code = ord(char) # 获取ASCII码 new_ascii_code = ascii_code + 4 # 加上4 new_char = chr(new_ascii_code) # 转化为对应的字符 cipher += new_char # 添加到密码字符串中 print(f"{word}的密码为:{cipher}") ```
评论 74
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值