Mysql 无法连接 - 访问被拒绝(使用密码是)

Posted

技术标签:

【中文标题】Mysql 无法连接 - 访问被拒绝(使用密码是)【英文标题】:Mysql cannot connect - Access denied (using password yes) 【发布时间】:2012-09-19 22:13:30 【问题描述】:

我有 11 2 提供的托管服务,我刚刚创建了一个新的 mysql 用户并授予它对列出的每个操作的访问权限。

我收到以下错误

Warning: mysql_connect() [function.mysql-connect]: Access denied for user '(username is here, removed for posting)' (using password: YES) in /home/.../public_html/config.php on line 10

这是我的配置文件

//connection details have been removed for posting purposes

<?php

 define('SQL_SERVER',''); // Database Server
 define('SQL_USER',''); //  User
 define('SQL_PASS',''); //  Password
 define('SQL_DB',''); //  database



 mysql_connect(SQL_SERVER,SQL_USER,SQL_PASS) or die("Error: ".mysql_error()); // Connection to the server
 mysql_select_db(SQL_DB) or die("Error: ".mysql_error()); // Connecting to the database
?>

我尝试按照这篇文章Access denied for user 'someuser'@'localhost' (using password: YES)的建议执行以下操作

GRANT ALL PRIVILEGES ON databasename.* TO 'bookorama'@'%' IDENTIFIED BY 'yourpassword';
FLUSH PRIVILEGES;

但我收到以下错误“#1044 - 用户拒绝访问”。当我登录 CPanel 并检查数据库用户时,它会显示我尝试登录的用户,所以我很困惑为什么它不起作用。

编辑 - 我让它工作了。服务器出了点问题。联系了房东,他们处理了。感谢您的回复。

【问题讨论】:

您确定输入的密码或用户名正确吗? 是的,我确定。我什至将密码设置为非常简单的东西(出于测试目的),它不会连接。 严肃的问题,当您使用GRANT ALL 时,您确实用您的信息代替了上面的信息,是吗? 我试过你的编码对我来说很好 @ultranaut 是的,我确保交换我的信息。 【参考方案1】:

我偶然发现了这个关于 Cpanel http://www.inmotionhosting.com/support/community-support/databases/1045-access-denied-for-user-mysql-error 的连接信息

您的 cPanel 用户名和密码可用于连接到您的数据库(以及您的 cPanel)。如果您使用您的 cPanel 用户名和密码连接到您的数据库,您可以重置您的 cPanel 密码以确保您使用的是正确的用户名和密码。

如果您专门为访问数据库设置了 MySQL 用户名和密码,您需要确保在 php 脚本中使用正确的用户名。例如,MySQL 用户名总是采用这种格式:

cpanel-用户名_mysql-用户名

如果您的 cPanel 用户名是 userna5,并且您创建了一个数据库用户名 dbuser1,那么实际的数据库用户名将是:

userna5_dbuser1

为了消除疑虑,我建议暂时将您的数据库密码更改为您的 Cpanel 帐户的密码。

【讨论】:

【参考方案2】:

除非您为mysql设置密码,否则通常不需要密码字段。

你可以使用 mysql_connect("hostname","username","")

但是如果你已经为你的mysql设置了密码,那么你必须在连接时输入密码。 如果仍然无法正常工作,那么您可能需要查看您的用户名和密码。

【讨论】:

【参考方案3】:

你的 sql server 是什么?有些公司出于安全目的将服务器名称从本地主机更改为其他名称 - 好吧,但是如果它说用户拒绝访问,那可能是您连接到错误的数据库?那就是

mysql_select_db(SQL_DB)

您确定您使用的是正确的数据库名称吗?并且您可以使用相同的用户名和密码登录您的 SQL 帐户吗?好吧,如果问题仍然存在尝试使用 SQL 的 root 帐户,超级管理员希望您在本地计算机上或拥有专用服务器。

您为什么不尝试以这种形式使用它们-

$con = mysql_connect("host name","username","password");
$db = mysql_select_db("database name",$con);

【讨论】:

我要删除数据库和数据库用户,然后重新输入。用于管理数据库的帐户与用于实际“登录”它的帐户不同。用于管理数据库的实际上是CPanel 的登录。 CPanel 中有数据库工具,可让您添加和编辑数据库用户。此外,在 CPanel 中,您可以访问 PHPMyAdmin 来编辑数据库。因此,虽然我可以从 CPanel/PHPMyAdmin 创建和编辑数据库及其用户,但该 CPanel 帐户与从配置文件登录数据库创建的帐户不同。【参考方案4】:

我有同样的问题,我试图在两个不同的 Web 服务器之间进行连接。如果我在同一台服务器上使用我的 PHP 脚本,连接将建立,但如果我使用来自其他 Web 服务器(Web 托管)的相同脚本文件,则会出现此错误。

我通过提供我用来连接的 IP 地址来允许访问 MySQL 服务器(远程 MySQL)来解决这个问题。

还值得注意的是,我使用了域名,但域名对我不起作用。 CPanel 和 MySQL 用户本身都可以连接到 MySQL 服务器。希望对你也有帮助。

【讨论】:

以上是关于Mysql 无法连接 - 访问被拒绝(使用密码是)的主要内容,如果未能解决你的问题,请参考以下文章

无法连接到 MySQL:(1045)用户“root”@“localhost”的访问被拒绝(使用密码:是)[重复]

尽管已设置密码并在连接 uri 中输入密码,但用户 root@localhost 的 mysql 访问被拒绝(使用密码:否)

我无法显示来自 mysql 数据库的数据,而是告诉我访问被拒绝 [重复]

无法在 127.0.0.1:3306 连接到 mysql,用户 'root'@'localhost' 的用户 root 访问被拒绝(使用密码:YES)

用户'root'@'localhost'的phpMyAdmin访问被拒绝(使用密码:否)

我收到此错误消息:用户访问被拒绝(使用密码是)