PHP MySql(1045)用户访问被拒绝

6

我尝试搜索现有的解决方案来解决这个问题,但是我找到的答案到目前为止都没有起作用。

我一直在尝试使用PHP连接到一个MySql数据库。我的Web主机在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 前面添加了我的 cPanel 用户名,并将 dbUsername 添加进去。

看起来我已经正确设置了一切,但无法连接(出现上述错误)。我对服务器没有直接的控制权,需要向我的网络托管提供商询问,这可能需要几天时间来解决。我的连接代码有问题吗?


2
访问被拒绝意味着你尝试登录的账户不存在或没有登录权限。 - Marc B
如果您的数据库用户名为 dbUsername,为什么要输入 cPanelUsername_dbUsername?或者这是您的托管提供商特有的怪癖吗? - Wrikken
1
这似乎是cPanel的一个怪癖,至少从我所读到的资料来看。 - Baknik
4个回答

4

首先检查您是否已将适当的用户访问权限授予您的数据库,该权限是从cpanel中的Mysql数据库部分的“添加用户到数据库”中给出的。

之后再次检查它,

首先尝试在php中使用正常连接代码,

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

原来这就是解决方案。通过使用我的 cPanel 凭据中的 "mysql_connect" 而不是 "new mysqli",我终于让它工作了。 - Baknik

1

在 cPanel 中,请确保:

  1. 已创建数据库用户名为 cPanelUsername_dbName,密码为 dbPassword 的用户。
  2. 已创建所需使用的数据库。
  3. 允许用户 cPanelUsername_dbName 访问该数据库。
  4. 允许用户 cPanelUsername_dbNamelocalhost127.0.0.1 和您服务器的 IP 地址访问该数据库。

您的 MySQL 连接可能会使用 127.0.0.1 或者您服务器的 IP 地址,如果没有为特定的 IP 地址授权访问权限,MySQL 将拒绝连接。


0

请在您的 phpMyAdmin 中检查数据库名称的拼写。通常名称格式为 user_dbname

例如:

cpanel username: jack,  
database created: student

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

0

这对我有用:

  • 根据您拥有的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');
  • 如果您正在尝试从不同的机器(例如模拟器、另一台计算机)访问本地主机服务器,请确保使用实际的本地主机IP地址,而不是使用localhost作为主机名。因为这就像告诉机器连接到自己,但服务器在不同的IP地址上。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接