c# - MySQL SELECT 命令拒绝用户 - MySql.Data.EntityFrameworkCore
问题描述
我正在使用第三方托管服务。
他们为我提供了一个 MySQL 数据库和一个用户。
我正在运行这个简单的查询
SELECT * FROM db_a4b20a_reales.properties_residental;
我遇到了一些奇怪的情况,当尝试从 MySQL Workbench 运行此查询时它可以工作,但是当我尝试从我的 .Net Core 2.2 应用程序运行它时,我收到以下错误:
SELECT command denied to user 'a4b20a_reales'@'{the server ip...}' for table 'properties_residental'
at MySql.Data.MySqlClient.MySqlStream.ReadPacket()
at MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int64& insertedId)
at MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force)
at MySql.Data.MySqlClient.MySqlDataReader.NextResult()
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken)
--- End of stack trace from previous location where exception was thrown ---
at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.ExecuteAsync(IRelationalConnection connection, DbCommandMethod executeMethod, IReadOnlyDictionary`2 parameterValues, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Query.Internal.AsyncQueryingEnumerable`1.AsyncEnumerator.BufferlessMoveNext(DbContext _, Boolean buffer, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Query.Internal.AsyncQueryingEnumerable`1.AsyncEnumerator.MoveNext(CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Query.EntityQueryModelVisitor.AsyncSelectEnumerable`2.AsyncSelectEnumerator.MoveNext(CancellationToken cancellationToken)
at System.Linq.AsyncEnumerable.SelectEnumerableAsyncIterator`2.MoveNextCore(CancellationToken cancellationToken)
at System.Linq.AsyncEnumerable.AsyncIterator`1.MoveNext(CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Query.Internal.AsyncLinqOperatorProvider.ExceptionInterceptor`1.EnumeratorExceptionInterceptor.MoveNext(CancellationToken cancellationToken)
at System.Linq.AsyncEnumerable.Aggregate_[TSource,TAccumulate,TResult](IAsyncEnumerable`1 source, TAccumulate seed, Func`3 accumulator, Func`2 resultSelector, CancellationToken cancellationToken)
at SouthRealEstate.DAL.RealEstateDbServices.GetAllResidentalPropertiesAsync() in C:\omri\work\projects\gitRepo\RealEstateProfessional\SouthRealEstate.DAL\RealEstateDbServices.cs:line 56
- 我在 MySQL Workbench 和我的应用程序中使用相同的用户。
- 我从同一个主机/相同的环境运行两者。
- 这是我的连接 str
server=...;port=3306;user id=a4b20a_reales; password=***; database=db_a4b20a_reales; pooling=true; CharSet=utf8; Allow User Variables=True; Convert Zero Datetime=True; default command timeout=720
- 我在用
MySql.Data.EntityFrameworkCore(8.0.16)
- 请不要回答
grant permission
,这不是问题。
更新:
使用时它正在工作MySql.Data.MySqlClient
,似乎问题出在MySql.Data.EntityFrameworkCore(8.0.16)
连接器上
解决方案
替换为Pomelo.EntityFrameworkCore.MySql
而不是MySql.Data.EntityFrameworkCore(8.0.16)
.
推荐阅读
- c# - 在 c# 后端代码中的 http get 请求中包含原始文本
- html - 如果将边距和填充设置为 0 不起作用,如何删除容器左侧的额外空间?
- docker - Vivado Synthesis 挂在 Jenkins 生成的 Docker 容器中
- jenkins - 当我拥有 Amazon Corretto jdk 8 时,如何从浏览器启动代理?
- c - 不明白为什么我不断收到这段代码的分段错误
- amazon-cloudformation - 为什么在 cloudformation 中没有创建自动缩放
- swift - 选择 TableView 中的每一行,包括屏幕外的行
- nginx - Cloud Foundry - 更新到 NGINX buildpack - 部署期间出现 500 错误
- java - 我有来自 textview 的文本,我想在空行之前擦除/删除一些数据
- vb.net - 为什么当我发布我的新 Web 应用程序时计时器不工作?