【问题标题】:Unable to connect to mysql via php but works fine from command line无法通过 php 连接到 mysql,但从命令行可以正常工作
【发布时间】:2012-04-06 02:10:01
【问题描述】:

我只是设置一个新的 VPS 学习设置我自己的网络服务器,并停留在这个非常基本的步骤。

PHP 5.3.3
MySQL 5.1.61
CentOS release 6.2 (Final)

我可以在命令行使用 mysql 或远程使用 Navicat 连接到服务器而不会出现问题。我已将主机设置为 '%' 进行测试,因为 localhost 也不起作用。我尝试过使用“localhost”、IP 等。

Connect failed: Access denied for user 'stats'@'localhost' (using password: YES)

用户:

+-----------+---------+
| Host      | User    |
+-----------+---------+
| %         | stats   |
| 127.0.0.1 | root    |
| localhost | root    |
+-----------+---------+

我的代码:

<?php
    $mysqli = new mysqli("localhost", "user", "db", "pw");
?>

直接从命令行运行 php 脚本时出错(无网络服务器):

PHP Warning:  mysqli::mysqli(): (28000/1045): Access denied for user 'stats'@'localhost' (using password: YES) in /xxx/db.php on line 5
Connect failed: Access denied for user 'stats'@'localhost' (using password: YES)

通过apache运行时返回相同。

提前致谢。

【问题讨论】:

  • 你的数据库和你的php代码在同一个服务器上吗?
  • 是的,这就是我使用“localhost”连接的原因,感谢您帮助澄清这一点!
  • 我问这个是因为这是一个常见的错误。

标签: php mysql centos


【解决方案1】:

这一行:

$mysqli = new mysqli("localhost", "user", "db", "pw");

应该是:

$mysqli = new mysqli("localhost", "user", "pw", "db");

密码在数据库名称之前

【讨论】:

  • 赢家,哇。它证明了第二双眼睛有时可以解决最简单的问题!
  • 哦,我本来打算.. 我一直在检查是否可以单击复选标记!你回答得太快了。 :D
【解决方案2】:

你正在混合 mysqlmysqli

编辑

检查您尝试连接数据库的用户的权限。

【讨论】:

  • mysqli 扩展是 mysql 4.1+ 的改进 mysql 扩展,我很确定这与问题无关。我没有收到扩展程序错误,我收到用户访问被拒绝错误。
  • 那么你应该检查你使用的用户名的权限
【解决方案3】:

您输入的密码是否正确?检查密码

【讨论】:

  • 密码正确,如上所述我可以使用命令行登录或远程访问。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-27
  • 1970-01-01
  • 2017-12-20
  • 2012-09-05
  • 2023-03-10
  • 2011-03-06
  • 2019-05-22
相关资源
最近更新 更多