php – 无法通过MAMP连接到MySQL

所以这是包含我的凭据的数组.

'mysql' => array(
    'host' => '127.0.0.1',
    'username' => 'root',
    'password' => '*',
    'db' => 's'
)

和实际的连接

 try{
    $this->_pdo = new PDO('mysql:host=' . Config::get('mysql/host') . ';dbname=' . Config::get('mysql/db'),Config::get('mysql/username'),Config::get('mysql/username'));
}
catch(PDOException $e){
    die($e->getMessage());
}

这就是我得到的错误

SQLSTATE[28000] [1045] Access denied for user ‘root’@’localhost’ (using password: YES)

但我知道这意味着访问被拒绝,但凭据是100%正确的.我还通过命令行和工作台进行了测试.

最佳答案
你确定设置了密码吗?如果您尝试通过命令行连接,会发生什么:

/Applications/MAMP/Library/bin/mysql -uroot

此外,MAMP中root的密码是root.这不是深刻/黑暗的秘密.您的示例中的*是否有效?

在您的连接器中,您是否尝试过使用localhost而不是127.0.0.1?我已经看到一些MySQL设置可以同时使用一个而不是另一个.

编辑:如果你以某种方式搞砸了root密码,不要惊慌!您仍然可以通过这种方式重置它.警告,有些人认为这种密码重置方法是“有风险的”,但对于生产服务器或任何野外服务器来说通常都是如此.从桌面上的MAMP,这应该100%安全.

首先,完全停止MAMP.

接下来,使用skip-grant-tables选项从命令行再次启动它,如下所示:

/Applications/MAMP/Library/bin/mysqld --skip-grant-tables

完成后,您可以100%无密码登录,如下所示:

/Applications/MAMP/Library/bin/mysql -uroot

然后你可以用这个单行重置root密码:

UPDATE user SET Password=PASSWORD('root') WHERE user='root'; FLUSH PRIVILEGES; exit;

好的,现在从命令行中找到运行带有skip-grant-tables的MySQL守护进程的进程,如下所示:

ps -u [your system username] | grep "mysqld --skip-grant-tables"

应该返回包含两个项目的列表:一个是mysqld&另一个是你刚才做的命令.像这样的东西:

502  1759 ttys004    0:00.11 /Applications/MAMP/Library/bin/mysqld --skip-grant-tables
502  1766 ttys004    0:00.00 grep mysqld

好的,现在我们知道带有skip-grant-tables的mysqld有进程ID 1759,继续杀掉它就像这样:

kill 1759

再次重启MAMP& root密码应该按预期工作.

转载注明原文:php – 无法通过MAMP连接到MySQL - 代码日志