asp.net/MySQL:拒绝访问用户''@ localhost'(使用密码:否)
我是一位网络开发新手,我希望有更多经验的人可以帮助解决这个问题。我被MySQL升级埋伏了。asp.net/MySQL:拒绝访问用户''@ localhost'(使用密码:否)
背景: 我有两台XP电脑(让我们雄心勃勃地称他们为“网络服务器”和“MySQL服务器”)。我最近构建并成功托管了一个从MySQL数据库中提取数据的asp.net站点。它只是一个为少数本地用户设计的网站,所以他们不必学习SQL来获取数据......没有什么奇特的。到现在为止还挺好。
问题: 本周我在“web服务器”上安装了MySQL,这就是当事情变得疯狂的时候。在这之前,Web服务器上没有任何MySQL实例。由于安装我有:
- ...重新安装MySQL的.NET提供
- ...重新配置machine.config文件
- ...复制MySQL_Web.dll MySQL的bin目录
- ...试图使安装程序与下面网站中的指示一致。
http://dev.mysql.com/doc/refman/5.0/en/connector-net-tutorials-asp-roles.html
这解决了一些问题,并且我得到了网站的部分并再次运行。我可以访问登录页面,并且访客用户的查询正在返回数据。
错误消息#1 但是,当用户试图登录浏览网站上的私人网页,我得到的错误“访问被拒绝的用户‘’@‘localhost’的(使用密码:NO) “。这显然是错误的,因为我使用密码,并且没有指向本地主机/ Web服务器的连接字符串。唯一的连接字符串指向数据库所在的MySQL服务器。
错误消息#2 我也期待在asp.net网站管理工具在安全选项卡,看到以下错误:
“没有您所选择的数据存储问题。这可能是由于无效的服务器名称或凭证,或者权限不足造成的,也可能是由于未启用角色管理器功能导致的。单击下面的按钮将被重定向到一个页面,您可以选择一个新的数据存储。以下消息可能有助于诊断问题:发生异常。请检查事件日志。“
角色管理器已启用,并且提供者已正确设置。
我试着在网络服务器上卸载MySQL,重新创建网站的用户表,冲洗特权和一些其他技巧,但该网站现在似乎在登录过程中永久绕过连接字符串中的数据库,并且而不是搜索Web服务器。
有没有人有任何想法,我可以接下来呢?我被困了几天,我不知道我还能做什么。
编辑:供应相关的代码,请在下面的意见。如上所述,这是作为默认项目的一部分生成的所有标准代码,并且没有以任何方式进行编辑(当然除了web.config)。
的Web.config
<connectionStrings>
<remove name="MySQLWebConnection"/>
<add name="MySQLWebConnection" connectionString="server=myWebServer;User Id=myName;password=myPwd;database=myDB" providerName="MySql.Data.MySqlClient"/>
</connectionStrings>
<system.web>
<membership defaultProvider="MySQLMembershipProvider" />
<roleManager enabled="true" defaultProvider="MySQLRoleProvider" />
<authentication mode="Forms">
<forms name=".ASPXFORMSAUTH" loginUrl="~/Account/Login.aspx" defaultUrl="~/Default.aspx" />
</authentication>
...
</system.web>
的Login.aspx
<asp:Login ID="LoginUser" runat="server" EnableViewState="false" RenderOuterTable="false">
<LayoutTemplate>
<span class="failureNotification">
<asp:Literal ID="FailureText" runat="server"></asp:Literal>
</span>
<asp:ValidationSummary ID="LoginUserValidationSummary" runat="server" CssClass="failureNotification"
ValidationGroup="LoginUserValidationGroup"/>
<div class="accountInfo">
<fieldset class="login">
<legend>Account Information</legend>
<p>
<asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">Username:</asp:Label>
<asp:TextBox ID="UserName" runat="server" CssClass="textEntry"></asp:TextBox>
<asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="UserName"
CssClass="failureNotification" ErrorMessage="User Name is required." ToolTip="User Name is required."
ValidationGroup="LoginUserValidationGroup">*</asp:RequiredFieldValidator>
</p>
<p>
<asp:Label ID="PasswordLabel" runat="server" AssociatedControlID="Password">Password:</asp:Label>
<asp:TextBox ID="Password" runat="server" CssClass="passwordEntry" TextMode="Password"></asp:TextBox>
<asp:RequiredFieldValidator ID="PasswordRequired" runat="server" ControlToValidate="Password"
CssClass="failureNotification" ErrorMessage="Password is required." ToolTip="Password is required."
ValidationGroup="LoginUserValidationGroup">*</asp:RequiredFieldValidator>
</p>
<p>
<asp:CheckBox ID="RememberMe" runat="server" Visible="false" />
<asp:Label ID="RememberMeLabel" runat="server" Visible="false" AssociatedControlID="RememberMe" CssClass="inline">Keep me logged in</asp:Label>
</p>
</fieldset>
<p class="submitButton">
<asp:Button ID="LoginButton" runat="server" CommandName="Login" Text="Log In" ValidationGroup="LoginUserValidationGroup"/>
</p>
</div>
</LayoutTemplate>
</asp:Login>
解决。希望这可以帮助其他有类似问题的人,并且可以缓解一些偏头痛。一个星期的恐慌让我在所有其他事情都失败时寻求神圣的干预,所以楼上的那个大个子得到了这个。 :)
原因: 重新安装MySQL和.NET连接器意味着machine.config文件自定义被覆盖。
解决方案: 更新后,请确保以下两个变化是在machine.config文件的地方...
(1)
<membership>
<providers>
<add name="MySQLMembershipProvider" **autogenerateschema="true"** ... />
</providers>
</membership>
(2)
<connectionStrings>
<add name="LocalMySqlServer" connectionString="server=dbServer;User Id=myUserID;password=myPassword;database=myDatabase" />
</connectionStrings>
这是第二个让我绊倒的人。在重新安装代码已改变为...
<connectionStrings>
<add name="LocalMySqlServer" connectionString="" />
</connectionStrings>
...这就是为什么网站试图连接到本地主机,以及为什么在web.config中的ConnectionString用户信息是被忽略。
该错误消息表明您还没有使用用户名。是否有可能发布设置用户名和密码的代码(当然,如果它们是明文的话,将它们与****区分开来)并尝试连接?这看起来像是一个代码问题。 – 2013-03-21 17:38:51
你打赌。像任何新秀一样,我使用的代码是直接开箱的。除了web.config更改之外,所有代码与作为默认项目的一部分生成的代码完全相同。它在安装之前工作正常,并且从那以后没有改变。我也确定我正在输入用户名。 :S – user2009790 2013-03-21 18:10:17