提问者:小点点

MySQL与一个数据库的连接失败,而与其他数据库的连接失败


我在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" />

null

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

拒绝用户“root”@“对数据库”GE_SC001“的访问

注意上面没有localhost,即'root'@'localhost'

显示授予

“授予...的所有特权。到\'root\'@\'localhost\'(由密码'*xxx\'标识),带有GRANT选项''GRANT proxyon\'\'@\'\'到\'root\'@\'localhost\',带有GRANT选项''

由于ASP.NET mvc在启动应用程序之前会检查数据库连接,所以我在服务器上有一个默认数据库,它被定义为gecontext。如您所见,数据库名称也是GE。我根本没有更改这个连接字符串,所以它仍然指向localhost。


共1个答案

匿名用户

您的外部IP中缺少GE_SC001Grant

从外部IP连接

(要在远程服务器上运行的)特定语法应为

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

其中是远程客户端的外部IP

一个更笼统的(我不喜欢,太宽泛了)应该是:

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

---旁注---

mysql.user表中有一个干扰项。手动删除该功能,并使用刷新特权清除了问题