MySQL连接失败,有一个数据库而不是其他

时间:2017-10-04 00:28:38

标签: mysql asp.net-mvc-4

我在mysql上有2个数据库。 ge ge_sc001

我可以通过我的asp.net mvc应用程序在本地访问这两个。

的Web.config

 <connectionStrings>
<add name="GEContext_sc001" connectionString="server=localhost;port=3306;uid=root;pwd=***;database=ge_sc001" providerName="MySql.Data.MySqlClient" />
<add name="GEContext_sc002" connectionString="server=localhost;port=3306;uid=root;pwd=***;database=ge" providerName="MySql.Data.MySqlClient" />
<add name="GEContext" connectionString="server=localhost;port=3306;uid=root;pwd=***;database=ge" providerName="MySql.Data.MySqlClient" />

稍后我在Web服务器上部署了我的应用程序,并尝试从本地计算机访问它们。我将 server = localhost 更改为我机器的面向外部的IP地址。现在我只能访问一个 ge 。当我尝试访问第二个时它会给我错误。

  

用户访问被拒绝&#39; root&#39; @&#39;&#39;到数据库&#39; ge_sc001&#39;

请注意,上面没有本地主机,即&#39; root&#39; @&#39; localhost&#39;

显示资助

&#39;在上授予所有权限。托管\&#39; @ \&#39; localhost \&#39;通过密码识别\&#39; * xxx \&#39; WITH GRANT OPTION&#39; &#39;授权代理\&#39; \&#39; @ \&#39; \&#39; TO \&#39; root \&#39; @ \&#39; localhost \&#39; WITH GRANT OPTION&#39;

一些额外信息

由于asp.net mvc在启动应用程序之前检查数据库连接,因此我在服务器上有一个默认数据库,定义为GEContext。正如您所看到的那样,数据库名称也是ge。我根本没有更改此连接字符串,因此它仍然指向localhost。

1 个答案:

答案 0 :(得分:1)

GRANT

您错过了外部IP的ge_sc001

Connect from external IP

具体语法(在远程服务器上运行)应为

GRANT ALL ON ge_sc001.* TO 'root'@'<external_ip>';

<external_ip>是您的远程客户端外部IP

更通用(我不喜欢它,太宽泛)将是:

GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY '<password>' WITH GRANT OPTION;

---侧面说明---

mysql.user表中存在一个干扰的条目。手动删除并使用FLUSH PRIVILEGES清除了