【问题标题】:PHP MySql (1045) Access Denied For UserPHP MySql (1045) 拒绝用户访问
【发布时间】:2014-01-29 17:05:53
【问题描述】:

我已尝试搜索此问题的现有答案,但我找到的答案到目前为止还没有奏效。

我一直在尝试使用 PHP 连接到 MySql 数据库。我的网络主机在 Linux 上使用 cPanel。我用来执行此操作的代码似乎足够标准:

$mysqli = new mysqli("localhost", "cPanelUsername_dbUsername", "dbPassword", "cPanelUsername_dbName");

我收到以下错误:

Failed to connect to MySQL: (1045) Access denied for user 'cPanelUsername_dbUsername'@'localhost' (using password: YES)Access denied for user 'cPanelUsername'@'localhost' (using password: NO) 
  • “localhost”是MySql服务器所在的主机服务器(好像这样可行)
  • "cPanelUsername" 是我的 cPanel 用户名
  • "dbUsername" 是数据库用户,我将其添加到数据库并授予所有权限
  • "dbPassword" 是 dbUsername 的数据库密码
  • "dbName" 是数据库名称

在其他地方搜索此问题的答案后,我最终在 dbName 和 dbUsername 之前添加了我的 cPanel 用户名。

看起来我已经正确设置了所有内容,但没有连接(出现上述错误)。我对服务器没有任何直接控制权,我不必询问我的虚拟主机,这可能需要几天时间才能解决。我的连接代码有问题吗?

【问题讨论】:

  • 访问被拒绝意味着您尝试登录的帐户不存在或无权登录。
  • 如果你的数据库用户叫dbUsername,你为什么输入cPanelUsername_dbUsername?或者这是您的托管服务提供商的怪癖?
  • 这似乎是 cPanel 的一个怪癖,至少从我读过的内容来看。

标签: php mysql


【解决方案1】:

首先检查您为数据库授予了正确用户访问权限的数据库,该权限在 cpanel 中的从 Mysql 数据库部分添加用户到数据库中给出。

然后再检查一遍,

先试试php中的正常连接代码,

$con = mysql_connect("localhost","cpanel_username","cpanel_password");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

【讨论】:

  • 原来这是解决方案。通过在我的 cPanel 凭据中使用“mysql_connect”而不是“new mysqli”,我能够让它工作。
【解决方案2】:

在 cPanel 中,确保:

  1. 数据库用户cPanelUsername_dbName存在,密码dbPassword
  2. 您要使用的数据库已存在。
  3. 用户cPanelUsername_dbName被允许访问数据库。
  4. 允许用户cPanelUsername_dbNamelocalhost127.0.0.1和您服务器的IP地址访问数据库。

您的 MySQL 连接可能使用127.0.0.1 或您服务器的 IP 地址,如果未授予对所使用的特定 IP 地址的访问权限,MySQL 将拒绝该连接。

【讨论】:

    【解决方案3】:

    检查phpMyAdmin 处的数据库名称拼写。通常名称的格式为user_dbname

    例如:

    cpanel username: jack,  
    database created: student
    

    在您的 php 脚本中,dbname 应该是 jack_student

    【讨论】:

      【解决方案4】:

      这对我有用:

      • 根据您使用的 MySQL 版本,确保您的 PHP 文件 config.inc.php 文件中的密码和主机名匹配。

      如果您需要更改 MySQL 5.7.6 及更高版本的密码:

      ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
      

      MySQL 5.7.5 及更早版本:

      SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
      
      • 如果您尝试从另一台机器(即模拟器、另一台计算机)访问您的 localhost 服务器,请确保您使用的是 localhost 的实际 IP 地址,请勿使用 localhost 作为主机名。因为这就像告诉机器连接到自己 - 但服务器在不同的 IP 地址上。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-08-08
        • 1970-01-01
        • 2016-04-25
        • 1970-01-01
        • 2014-09-22
        • 2012-11-08
        • 2015-06-15
        • 2011-01-27
        相关资源
        最近更新 更多