经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » ASP.net » 查看文章
从NetCore报错到MySql安全
来源:cnblogs  作者:传说中的路人甲  时间:2019/2/13 9:28:32  对本文有异议

之前项目在测试服务器上的一些接口时不时会报出下面的错误:(采用Abp框架)

  1. "SocketException: 你的主机中的软件中止了一个已建立的连接。
  2. STACK TRACE: at MySqlConnector.Protocol.Serialization.SocketByteHandler.WriteBytesAsync(ArraySegment`1 data, IOBehavior ioBehavior) in C:\projects\mysqlconnector\src\MySqlConnector\Protocol\Serialization\SocketByteHandler.cs:line 90
  3. --- End of stack trace from previous location where exception was thrown ---
  4. at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
  5. at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
  6. at MySqlConnector.Utilities.ValueTaskExtensions.<ContinueWith>d__0`2.MoveNext() in C:\projects\mysqlconnector\src\MySqlConnector\Utilities\ValueTaskExtensions.cs:line 8
  7. --- End of stack trace from previous location where exception was thrown ---
  8. at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
  9. at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
  10. at MySqlConnector.Core.ServerSession.TryAsyncContinuation(Task`1 task) in C:\projects\mysqlconnector\src\MySqlConnector\Core\ServerSession.cs:line 1225
  11. at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke()
  12. at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
  13. at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot)
  14. --- End of stack trace from previous location where exception was thrown ---
  15. at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
  16. at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
  17. at MySqlConnector.Core.TextCommandExecutor.<ExecuteReaderAsync>d__1.MoveNext() in C:\projects\mysqlconnector\src\MySqlConnector\Core\TextCommandExecutor.cs:line 36
  18. --- End of stack trace from previous location where exception was thrown ---
  19. at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
  20. at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
  21. at MySql.Data.MySqlClient.MySqlCommand.<ExecuteNonQueryAsync>d__60.MoveNext() in C:\projects\mysqlconnector\src\MySqlConnector\MySql.Data.MySqlClient\MySqlCommand.cs:line 261
  22. --- End of stack trace from previous location where exception was thrown ---
  23. at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
  24. at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
  25. at MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery() in C:\projects\mysqlconnector\src\MySqlConnector\MySql.Data.MySqlClient\MySqlCommand.cs:line 62
  26. at MySql.Data.MySqlClient.MySqlTransaction.Dispose(Boolean disposing) in C:\projects\mysqlconnector\src\MySqlConnector\MySql.Data.MySqlClient\MySqlTransaction.cs:line 81
  27. at Microsoft.EntityFrameworkCore.Storage.RelationalTransaction.Dispose()
  28. at Abp.EntityFrameworkCore.Uow.DbContextEfCoreTransactionStrategy.Dispose(IIocResolver iocResolver)
  29. at Abp.EntityFrameworkCore.Uow.EfCoreUnitOfWork.DisposeUow()
  30. at Abp.Domain.Uow.UnitOfWorkBase.Dispose()
  31. at Abp.AspNetCore.Mvc.Uow.AbpUowActionFilter.<OnActionExecutionAsync>d__4.MoveNext()
  32. --- End of stack trace from previous location where exception was thrown ---
  33. at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
  34. at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
  35. at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.<InvokeNextActionFilterAsync>d__10.MoveNext()
  36. --- End of stack trace from previous location where exception was thrown ---
  37. at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
  38. at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context)
  39. at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
  40. at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.<InvokeInnerFilterAsync>d__13.MoveNext()
  41. --- End of stack trace from previous location where exception was thrown ---
  42. at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
  43. at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
  44. at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.<InvokeNextExceptionFilterAsync>d__24.MoveNext()
  45. "
View Code
  1. MySql.Data.MySqlClient.MySqlException (0x80004005): Failed to read the result set.
  2. ---> System.IO.EndOfStreamException: Expected to read 4 header bytes but only received 0.
  3. at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
  4. at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
  5. at MySqlConnector.Protocol.Serialization.ProtocolUtility.DoReadPayloadAsync(BufferedByteReader bufferedByteReader, IByteHandler byteHandler, Func`1 getNextSequenceNumber, ArraySegmentHolder`1 previousPayloads, ProtocolErrorBehavior protocolErrorBehavior, IOBehavior ioBehavior) in C:\projects\mysqlconnector\src\MySqlConnector\Protocol\Serialization\ProtocolUtility.cs:line 462
  6. at MySqlConnector.Protocol.Serialization.StandardPayloadHandler.ReadPayloadAsync(ArraySegmentHolder`1 cache, ProtocolErrorBehavior protocolErrorBehavior, IOBehavior ioBehavior) in C:\projects\mysqlconnector\src\MySqlConnector\Protocol\Serialization\StandardPayloadHandler.cs:line 37
  7. at MySqlConnector.Core.ServerSession.ReceiveReplyAsync(IOBehavior ioBehavior, CancellationToken cancellationToken) in C:\projects\mysqlconnector\src\MySqlConnector\Core\ServerSession.cs:line 645
  8. --- End of stack trace from previous location where exception was thrown ---
  9. at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
  10. at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
  11. at MySqlConnector.Core.ServerSession.TryAsyncContinuation(Task`1 task) in C:\projects\mysqlconnector\src\MySqlConnector\Core\ServerSession.cs:line 1230
  12. at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke()
  13. at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
  14. at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot)
  15. --- End of stack trace from previous location where exception was thrown ---
View Code

然后我使用swagger+miniprofiler,查看生成的sql语句

 

查看Mysql错误日志:

Aborted connection 422 to db: '数据库名称' user: 'root' host: 'localhost' (Got a packet bigger than 'max_allowed_packet' bytes)

可能因为传输的数据过大,而Mysql的max_allowed_packet默认为1024b,导致sql执行不成功。

然后将Mysql配置文件中的max_allowed_packet值改为max_allowed_packet = 4M

重启Mysql,问题解决。

 

然而过了一段时间,同样的报错又出现了,首先看了下max_allowed_packet的值,果然max_allowed_packet又被修改为了1024b,查看命令如下:

  1. show variables like '%max_allowed_packet%';

 

然后询问同事,他们说并没有动数据库,上网查了下说是有可能是被攻击了。

于是我开启了Mysql的日志,命令如下:

  1. set global general_log=on;

 

在日志里看到了被修改信息,然后看了下ip~~~

还发现了几个新增用户TvT,把它删掉:

 

查看Mysql用户命令如下:

  1. select * from mysql.user

 

目前解决方法是,加强密码,限制远程连接ip:把上图的% 改为指定ip段xxx.xxx.xxx.%,重启Mysql。

原文链接:http://www.cnblogs.com/tianyaguoke/p/10366148.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号