Connection open error . Authentication to host xxx' for user 'aa' using method 'mysql_native_password' failed with message: Access denied for user 'aaa' (using password: NO)

一,在netcore中,我们使用容器讲上下文保持全局唯一的时候,异步大并发查mysql,就会导致报以上的异常,这个是什么原因导致的呢?

二,我们去调试下,在数据库连接执行Open前,我们是有pwd这个属性的

 在我们执行open后发现,连接的pwd属性去掉了

 三,由上所得,由于注入容器一样,然而配置的pwd没了,再次用这个连接字符串去open,就会报错没有密码的错using password: NO

四,这个时候有怎么办呢?如下配置

"ConString": "Server=xxx;Port=61010;Database=xx;Uid=xx;Pwd=xxx;CharSet=utf8mb4;;Persist Security Info=True;",

在配置添加Persist Security Info=True;这个属性

四,这个是什么意思呢?

1》将Persist Security Info设置为true或yes将允许在打开连接后从连接获取安全敏感信息,包括用户标识和密码。
2》如果您在建立连接时提供了用户标识和密码,那么当这些信息被用于打开连接并被丢弃时,您将得到最大程度的保护。
3》有助于提供更高安全性的选项是将Persist security Info设置为false。

所以加上这个后,用户密码会一直保持在连接上,而并不是执行open方法后密码就不存在了

原文地址:https://www.cnblogs.com/May-day/p/13497933.html