MySQL 与一个数据库连接失败,而与其他数据库连接失败
MySQL connection fails with one database and not with other
我在 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。当我尝试访问第二个时,它给我错误。
Access denied for user 'root'@'' to database 'ge_sc001'
注意上面没有本地主机,即 'root'@'localhost'
显示资助
'将 . 上的所有权限授予 \'root\'@\'localhost\',密码为 \'*xxx\' 并授予选项'
'GRANT PROXY ON \'\'@\'\' 到 \'root\'@\'localhost\' WITH GRANT OPTION'
一些额外信息
由于asp.net mvc 在启动应用程序之前检查数据库连接,我在服务器上有一个默认数据库,它被定义为 GEContext。如您所见,数据库名称也有 ge。我根本没有更改此连接字符串,所以它仍然指向本地主机。
您缺少 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
table 中有一个散乱的条目正在干扰。手动删除并使用 FLUSH PRIVILEGES
清除了
我在 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。当我尝试访问第二个时,它给我错误。
Access denied for user 'root'@'' to database 'ge_sc001'
注意上面没有本地主机,即 'root'@'localhost'
显示资助
'将 . 上的所有权限授予 \'root\'@\'localhost\',密码为 \'*xxx\' 并授予选项' 'GRANT PROXY ON \'\'@\'\' 到 \'root\'@\'localhost\' WITH GRANT OPTION'
一些额外信息
由于asp.net mvc 在启动应用程序之前检查数据库连接,我在服务器上有一个默认数据库,它被定义为 GEContext。如您所见,数据库名称也有 ge。我根本没有更改此连接字符串,所以它仍然指向本地主机。
您缺少 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
table 中有一个散乱的条目正在干扰。手动删除并使用 FLUSH PRIVILEGES
清除了