首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Visual中拒绝用户'root'@'localhost‘(使用密码: YES)的访问

在Visual中拒绝用户'root'@'localhost‘(使用密码: YES)的访问
EN

Stack Overflow用户
提问于 2013-11-25 15:16:35
回答 3查看 10K关注 0票数 0

请容忍我。我是一个拥有大量Visual经验的Microsoft人员,但我需要使用MySQL数据库完成一些工作。

我试图在这里创建一个小工具,使我们的开发人员能够快速更新数据库记录,并且我正在使用Visual创建一个小型Windows表单来实现这一点。

Microsoft连接字符串中,我可以这样写:

代码语言:javascript
复制
Server=myServerAddress;Database=myDataBase;User Id=username;Password=password;

MySQL连接字符串中,似乎有多个其他选项,但第一个选项看起来基本相同:

代码语言:javascript
复制
Server=myServerAddress;Database=myDataBase;Uid=username;Pwd=password;

当我试图从我的PC打开MySQL连接时,我得到标题中列出的异常(实际上,它显示了我的PC的Uid值和IP地址,而不是localhost,但我希望更多的人以这种方式更容易地识别错误):

代码语言:javascript
复制
public static void MySQLi_Connect() {
  m_err = null;
  var str = Properties.Settings.Default.ConnStr;
  try {
    m_conn = new MySqlConnection(Properties.Settings.Default.ConnStr);
    m_conn.Open();
  } catch (MySqlException err) {
    ErrorLog("MySQLi_Connect", err);
  }
}

我进行了搜索,似乎需要从连接所用的特定IP地址授予Uid on MySQL访问权限。

此外,我在mysql.com文档页上找到了这个

如果您不知道要从其连接的机器的IP地址或主机名,则应在user表中以“%”作为主机列值的行。尝试从客户端计算机连接之后,使用SELECT USER()查询来查看您是如何真正连接的。然后将用户表行中的“%”更改为日志中显示的实际主机名。否则,系统将处于不安全状态,因为它允许从任何主机连接给定的用户名。

有几件事:

  • 看起来,我可以使用MySQL Uid jp2code中的一个%设置连接到,但是MySQL说我需要立即更改这个设置,以删除系统漏洞。
  • Microsoft似乎不需要这样做--或者,如果需要的话,我根本就不会像MySQL那样面对这个漏洞问题。

现在,我问:

  • 如果这将是不同的开发人员在不同的PCs上使用的工具,那么对这个可怕的系统漏洞视而不见是一种常见的做法吗?
  • 这难道不像MySQL所做的那样令人关注吗?
  • 继续使用需要从不同位置连接的Windows窗体应用程序的最佳方法是什么?显然,每当另一个开发人员想要使用该工具或有人试图从不同的PC上运行该工具时,我都不想继续为特定的应用程序添加更多的条目。
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-25 16:42:01

您可以根据需要配置MySQL服务器的安全性,通常不是连接用户,而是连接应用程序。因此,如果在生产环境中没有密码的根用户是您的错。通常,开发人员可以访问开发环境,所以这不是什么大事。

当然,尽可能多地使用您需要的角色,以您为例,我认为一个用户就足够了。在生产中,使用安全配置文件保存安全密码,并设置mysqlserver受限。

票数 1
EN

Stack Overflow用户

发布于 2016-05-06 11:06:32

我有同样的问题,我发现密码是不正确的。

转到您的sql命令行并键入下面的代码:mydb在下面的行中是您正在处理的数据库的名称。行中的passwd必须与c#代码中的密码相匹配,因此在您的情况下“密码”

代码语言:javascript
复制
grant all privileges on mydb.* to myuser@localhost identified by 'passwd';
票数 0
EN

Stack Overflow用户

发布于 2017-03-31 08:23:03

就像OP说的,您可以通配符主机名部分。我在开发服务器上使用了这个(不推荐用于生产服务器):

代码语言:javascript
复制
update mysql.user set host = '%' where host='localhost';

然后,我不得不重新启动服务器,以使MySQL使用它(很可能我只是重新启动了MySQL服务)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20196585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档