是的,我知道这是一个常见的问题。但我尝试了一切,但我无法解决这个问题。
所以我使用的是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中键入以下命令时:
show grants;
我得到以下内容:
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY PASSWORD 'NOT the plesk cleartext password'
显示的密码以星号(*)开头,后跟随机文本和数字。 我尝试使用此密码进行访问,但根本无法识别。
我认为这很奇怪,但我仍然无法找到解决方案。
答案 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