用户'admin'@'localhost'拒绝MySQL访问(使用密码:YES)

时间:2016-10-07 16:14:13

标签: php mysql database plesk

是的,我知道这是一个常见的问题。但我尝试了一切,但我无法解决这个问题。

所以我使用的是plesk 12.5,我可以使用这个使用散列密码的脚本从终端登录mysql:

MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysql -u admin

我甚至可以在添加-h localhost时登录。 但是当我从php脚本登录时,我无法登录。

<?php
$mysqli = new mysqli("localhost/ip adress", "admin", "plesk encrypted password", "database");

if (mysqli_connect_errno())
{
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

我尝试过:

  • 我试图更改mysql中的密码
  • 我试图更新mysql(它是最新的)
  • 我试图授予权限
  • 我尝试使用新的SQL用户访问
  • 我试图输入我见过的所有不同密码,所以我认为这不是密码问题(编辑)
编辑:感谢帖子,似乎以下内容与上述问题无关。

但毕竟这有一件事真的让我烦恼: 当我在mysql中键入以下命令时:

show grants;

我得到以下内容:

GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY PASSWORD 'NOT the plesk cleartext password'

显示的密码以星号(*)开头,后跟随机文本和数字。 我尝试使用此密码进行访问,但根本无法识别。

我认为这很奇怪,但我仍然无法找到解决方案。

2 个答案:

答案 0 :(得分:0)

$ mysqli = new mysqli(“localhost / ip adress”,“admin”,“真实密码dyou输入的不是加密的”,“数据库”);

答案 1 :(得分:0)

mysql和任何其他不错的工具都不会以纯文本或加密格式存储您的密码。它会将您输入的字符串哈希并销毁为密码,这样每次输入正确的密码时都可以获取该字符串从mysql本身恢复它。

你的grant命令没有问题,这就是它应该返回的内容。

这是一个简单的例子,而不是实际的过程:

我的密码是123456 加密格式为abcdef

当我输入加密格式(abcdef)时,mysql会将其转换为123456

现在它有你的明文密码,它将使用mysql自己的方法对其进行哈希处理,例如删除字符或将字符串侧向移位或使用fibonacci序列添加到ASCII值,或者程序员选择的任何其他方法。

假设我的哈希方法是删除第一个和最后一个字符,然后将2添加到剩余的

的ASCII值

第1行:123456 第2行:2345 第3行:4567

4567是我的哈希密码,因此将显示show grants:

GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY PASSWORD '4567'

而不是123456