带有 MySQL 连接器的 C# - 访问被拒绝
Posted
技术标签:
【中文标题】带有 MySQL 连接器的 C# - 访问被拒绝【英文标题】:C# with MySQL connector - access denied 【发布时间】:2012-12-05 21:23:18 【问题描述】:我有一个带有mysql
数据库的远程托管网站。
我正在尝试从一个小的 C#
程序访问该数据库。
我的尝试:
在项目中引用 MySQL DLL 使用 MySQL 连接字符串 禁用我的防火墙 将我的 IP 地址添加到站点 cPanel 中的Remote MySQL Databases
我得到了什么:
在 Visual Studio 控制台中拒绝用户 blabla@mycomputerip 访问什么让我难以置信:
如何确定我的虚拟主机服务是否允许远程连接到数据库? 我真的需要将 PuTTy 连接到服务器并调整配置吗? ^ 如果是这样,我什至可以这样做吗?稍后编辑:
足够有趣。如果我这样做了
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' WITH GRANT OPTION;
它向我抛出了这个:
#1045 - Access denied for user 'blabla'@'localhost' (using password: YES)
常识应该告诉你我的用户名实际上不是“blabla”。
稍后编辑:
我没有创建用户的权限,也没有通过 PuTTy 左右的 SSH 访问权限。 这是否基本上意味着我无法从远程位置连接到数据库是我的主机的错?
【问题讨论】:
您是在 VPS 上运行还是在共享主机上运行?如果在共享主机上,MySQL 服务器可能也是共享的,因此您将无法授予所有内容的权限,因为您自己无权访问所有内容。 【参考方案1】:查看 mysql 数据库中的用户。需要检查的几件事:
在共享主机上使用 cPanel,如果您创建一个名为 blah
的用户,则 mysql 中用户的实际名称通常是 unixusername_blah
。这是自动完成的,以防止共享同一 MySQL 服务器的不同 cPanel 帐户之间的 MySQL 用户名冲突。
使用 MySQL,您可以定义允许用户从哪些主机进行连接。您定义的新用户是否允许从您的 IP 连接?
预计到达时间:
可能想查看该用户帐户的权限并确保授予了适当的权限。您可以通过在 phpMyAdmin 或控制台中运行以下命令来做到这一点:
SHOW GRANTS FOR 'something_root'@'localhost'
并将您在此处看到的赠款与您在此处获得的赠款进行比较:
SHOW GRANTS FOR 'something_root'@'%'
最后,根据您的托管环境,您可能无权创建新用户或扩展他们的权限以使其能够执行此操作。如果您有共享主机帐户,这种情况尤其可能发生。
【讨论】:
数据库的用户名是censored_root,这是我不久前创建的。我使用此用途连接到我的 PHP 应用程序中的数据库,该应用程序已上传到网站上。我添加了%
通配符,现在它只显示Access denied for **censored**_root@%
。
@GGeorge - 更新了我的答案。可能是虽然具有%
通配符的用户现在存在,但它没有正确的授权。
显示 'something_root' 的授权让我访问被拒绝。但是,显示“某事”的资助实际上会给我一个结果。我真的很困惑,因为这表明我使用“something”而不是“something_root”登录。
我觉得我对整个 MySQL 访问的东西缺乏严肃的理论基础。
@GGeorge - 根据您上次的编辑,我想说您可能无法在这里做您想做的事。您可能需要从共享主机环境切换到您对服务器有更多控制权的 VPS。【参考方案2】:
重置mysql用户密码,然后重试
http://dev.mysql.com/doc/refman/5.1/en/resetting-permissions.html
【讨论】:
【参考方案3】:检查您的托管服务是否允许从其网络外部连接到其数据库服务器。 默认情况下,某些托管公司(例如 GoDaddy)不允许这样做。
此外,您需要通过首选的数据库管理工具创建数据库用户并为其分配权限。
【讨论】:
【参考方案4】:如何确定我的虚拟主机服务是否允许远程连接?
最好问问你的whebhosting证明者,有些允许远程连接,有些不允许。 如果它们允许远程连接,您可能必须配置允许用户从哪些主机进行连接,或者添加通配符 % 以允许来自任何主机的连接。
【讨论】:
以上是关于带有 MySQL 连接器的 C# - 访问被拒绝的主要内容,如果未能解决你的问题,请参考以下文章
Hive 与 MySQL 的连接:用户 'hive'@'localhost' 配置单元的访问被拒绝
Mariadb 连接客户端:mysql 8.0 上的用户访问被拒绝(使用密码:否)
MySQL + Laravel:SQLSTATE [HY000] [1045] 用户'so'@'localhost'的访问被拒绝,但连接数据正常并且配置缓存被清除