【问题标题】:Access Denied for user '' (using password: NO) but it does have password用户 '' 的访问被拒绝(使用密码:否),但它确实有密码
【发布时间】:2019-08-25 18:13:19
【问题描述】:

我无法通过visual studio vb.net 访问mariadb 我有一个工作的script 用于mysqlconnectionstring,我在以前的项目中使用过它,但它仍然运行良好。顺便说一句,我到目前为止使用的connectionString 与此类似 -> Mysql connectionString

但是当我出于某种未知原因为我的document tracking system 使用相同的连接字符串时,它确实会抛出一个弹出错误说

但令我惊讶的是,我更改了用户,并专门在该用户上添加了密码!根据上一个问题Using 127.0.0.1 fails when connecting to MySQL while using IP succeeds using VB.net

的建议

那么我无法连接到这个 MariaDB 服务器的原因是什么?

我可以向您保证问题不在插入语句上,因为就像我说过的那样,messagebox 在我尝试连接到数据库服务器时显示错误异常。

但如果你需要它作为参考,那么我将代码放在这里:

Dim DatabaseName As String = "myDB"
Dim server As String = "127.0.0.1"
Dim userName As String = "myUsername"
Dim password As String = "myF*ckinPassword"
Dim port As Integer = "3306"
If Not conn Is Nothing Then conn.Close()
conn.ConnectionString = String.Format("server={0}; user id={1}; password={2}; database={3}; port={4}; pooling=false", server, userName, password, DatabaseName, port)
Try
    conn.Open()
    'MsgBox("Connected")
Catch ex As Exception
    MsgBox(ex.Message)
    conn.Close()
Finally
    conn.Dispose()
End Try

任何帮助将不胜感激。

还值得一提的是,我已将Mysql.data.dll 包含在add referenceSystem.data.dll 中,并正确安装了所有connectorreader 以及所有必要的先决条件,以防万一你会问。

与此同时,我已经尝试了很多可以在IoT 中找到的解决方案,例如添加新用户和重新安装软件包等等。

更新

我对@9​​87654361@ 和flush privileges 以及change ip address 进行了常见故障排除,并将Listen 80 更改为Listen 192.168.0.X:80 等等......但错误仍然存​​在。

我以前的项目在我加载 DocumentTrackingSystem 表单的同一个 solution explorer 上也能正常工作。然而它没有得到同样的错误。我也尝试在另一台计算机上测试它,但问题仍然存在。

只要我通过这个项目连接,就好像我无法连接到mariadb

新的面部照片:

最新

我不知道为什么它无法检测到我的connectionString,无论我如何尝试修复它,错误仍然是一样的。我决定将它合并到以前的工作项目,即图书馆管理系统。

所以基本上,我所做的是,我创建了另一个表单并将其包含在菜单列表中。我只是在设计阶段。但是当我运行整个程序时,它并没有出现!

查看Formnew.vb Design

运行程序后立即查看

这只是一个普通的label,但为什么它没有显示它应该的方式?它没有隐藏,我还没有包含任何代码。这只是一个简单的label

【问题讨论】:

  • 我不确定您使用的是有效的连接器/网络连接字符串。试试here
  • 亲爱的,如果您看到我在这个问题的第一段中分享的链接,您可能会看到我的 connectionString 正是从那里得到的。不过,谢谢。
  • 那为什么每个示例都使用“Uid”和“Pwd”,而您的代码使用“user id”和“password”?您为这些属性使用了错误的名称这一事实可以解释为什么错误消息表明您没有提供用户名。
  • 亲爱的,这些确实适用于我的其他项目。这些被称为变量。没关系命名,因为那不是我关心的。请注意我的问题的起源和弹出窗口,因为该错误似乎已关闭。尽管我已经为此重新安装了两次xampp。它说access denied (using password: no) 虽然我正在调用带有密码的用户名。无论如何,感谢您的努力并尝试回答我的问题。我很感激。
  • 什么类型的对象是con?尝试将端口添加到服务器变量并将其从连接字符串中删除,例如“127.0.0.1:3306”。还应该首选使用 ConnectionStringBuilder 类。

标签: mysql vb.net visual-studio mariadb


【解决方案1】:

你的代码

String.Format("server={0}; user id={1}; password={2}; database={3}; port={4}; pooling=false", server, userName, password, DatabaseName, port)

将根据您发布的connectionstrings.com 链接生成一个无效的连接字符串。

输出

server=127.0.0.1; user id=myUsername; password=myF*ckinPassword; database=myDB; port=3306; pooling=false

字段名称(特别是用户 ID 和密码)错误。看这个演示:https://dotnetfiddle.net/2QDJNY

试试这个,它与连接字符串网站上提供的格式相匹配:

String.Format("Server={0};Port={4};Database={3};Uid={1};Pwd={2};Pooling=False;", server, userName, password, DatabaseName, port)

这将输出:

Server=127.0.0.1;Port=3306;Database=myDB;Uid=myUsername;Pwd=myF*ckinPassword;Pooling=False;

演示:https://dotnetfiddle.net/hlAVYf

【讨论】:

  • 您能否告诉我您更改代码后收到的确切错误消息?
  • 而且...希望这是一个愚蠢的问题,但您能否确认您的代码中没有其他地方您也尝试建立连接?希望不会,因为那会重复,但值得检查错误实际上来自您认为的位置。可能值得将完整的异常和堆栈跟踪记录到日志文件(以及仅弹出一个包含基本详细信息的消息框),以便您可以全面了解异常,包括行号等。
  • 请查看上面的最后一个屏幕截图。从昨天开始,我就把它放在那里了。这是我按照您的指示后遇到的确切错误。这也是我们正在处理的VB.Net 项目。我在您的示例中注意到您使用的是C#
  • 不,我不是。上面的所有代码以及 dot net fiddle 链接都是 VB。仔细检查它们。如果是 c#,您会在上面每一行的末尾看到 ;。并且小提琴链接非常清楚VB。但是无论哪种方式,概念都是相同的,无论您使用哪种语言,连接字符串都是相同的
  • 碰巧,这行代码在两种语言中基本上是相同的
猜你喜欢
  • 2018-10-24
  • 2015-10-07
  • 2018-02-22
  • 2016-12-27
  • 2012-06-17
  • 2019-12-19
  • 2017-10-26
相关资源
最近更新 更多