【问题标题】:Warning: mysql_select_db() Access denied for user ''@'localhost' (using password: NO)警告:mysql_select_db() 用户 ''@'localhost' 的访问被拒绝(使用密码:否)
【发布时间】:2013-03-10 00:26:51
【问题描述】:

我对网络开发相当陌生,我需要帮助来找出问题所在。我安装了 MySQL 5.6.10,并且我被赋予了更新一个网站的 src 的任务,该网站目前已经存在了 5 年。没有任何代码发生变化,它适用于其他开发者本地机器。服务器正在运行 5.0.51b,我刚刚降级到 5.5.30 试图让语法错误消失。错误是 SET OPTION SQL_BIG_SELECTS=1 在某个版本中被弃用为 SET SQL_BIG_SELECTS。由于服务器运行的版本,我无法更改语法。所以我选择将版本降到 5.5.30。

降级后我的问题是:

Warning: mysql_select_db() [function.mysql-select-db]: Access denied for user
''@'localhost' (using password: NO) in C:\Program Files (x86)\Apache Software
Foundation\Apache2.2\htdocs\****\src\www\include\func\func.db.php on line 47

我使用 MySQL Workbench 进行连接,所有连接或用户都没有与之关联的密码。我有另一个无法在本地主机上正常运行的项目。我的 vhost 和 host 文件都具有正确的语法以使其正常工作(已通过其他项目验证)。这一切都正常工作,并且昨天能够通过 vhost 调出页面。我从来没有对如何设置拉索引页有任何问题。唯一的问题是 MySQL 版本问题。我能做些什么来解决这个问题?我尝试在工作台中重新创建连接,甚至删除所有实例并重新创建它们。我难住了。任何帮助将不胜感激。

【问题讨论】:

  • 其他项目使用什么证书?
  • 您的登录脚本还能访问吗?
  • @Johan 您是在谈论警告的错误块吗?那是单行错误。我应该分手吗?另外,我真的不认为你的评论有帮助。没必要粗鲁,imo。
  • 如果您是 Web 开发新手,请避免在新项目中使用 mysql_query。这是一个摇摇欲坠、过时的界面,正在从 PHP 的未来版本中删除。如果您在learn PDO 上花费的时间很少,那么SQL escaping issues 的问题就会更少,并且在不再支持mysql_query 时不必重新编写您的应用程序。如果您在处理遗留应用程序时遇到困难,请务必小心。
  • @DanielVernon,阅读描述问题的大量文本都被拼成一个段落很难,仅此而已。

标签: php mysql mysql-workbench


【解决方案1】:

你可以看到这个错误是因为你没有正确连接你的mysql数据库。

mysql_connect("HOST","USER","PASSWORD")

确保主机、用户名和密码正确

【讨论】:

  • 我说的是你的错误。通常,出现这种类型的错误是因为您没有正确配置连接
【解决方案2】:

MySQL 是您唯一升级的吗?您升级 PHP 并且现在不再启用 register_globals 的任何机会?如果您关闭它而您的同事打开它,这可以解释您所看到的差异。

http://php.net/manual/en/security.globals.php

【讨论】:

  • 不,我没有更改我的 php 版本。我确实必须将 ereg_replace 更新为 preg_replace 并向模式添加分隔符。
【解决方案3】:

仔细查看您的错误,您会发现它告诉您出了什么问题(通常是错误报告的用途):

Access denied for user
''@'localhost' (using password: NO)

具体来看:

''@'localhost'
^^

您看到没有指定用户。您需要指定要连接的用户。

mysql_connect("HOST","USER","PASSWORD")

mysql_select_db 调用之前。

MySQL Connect &MySQL Select DB

注意:不要升级到 PHP 5.5 for MySQL_* 函数已被弃用。我这样说是因为您不想更改任何代码。

【讨论】:

  • 谢谢。我注意到它也是空白的,并试图找出它从哪里拉用户。我假设它来自 y 工作台。我有一个与我在 config.php 中为站点定义的用户相同的用户的数据库设置连接。也许我需要研究如何为连接配置工作台并从中进行处理。有什么建议吗?
  • @DanielVernon 我对工作台了解不多,但请确保最后一个mysql_connect 正确,然后再选择数据库(最好使用mysql_connect or die())并查看mysql_error。您的错误说它发生在选择数据库中。此外,如果未指定,mysql_\* 命令将使用上次打开的连接(如果未指定)
【解决方案4】:

根据我在返回的错误中看到的情况,您没有向连接传递用于连接 MySQL 的用户名。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-26
    • 2011-11-29
    • 2016-01-10
    • 2013-07-08
    • 2015-10-07
    • 1970-01-01
    • 2018-02-22
    相关资源
    最近更新 更多