无法通过MAMP连接到MySQL

时间:2014-04-29 00:55:52

标签: php mysql mamp

所以我的数组包含我的凭据。

'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]拒绝访问用户' root' @' localhost' (使用密码:是)

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

3 个答案:

答案 0 :(得分:5)

您确定设置了密码吗?如果您尝试通过以下命令行连接会发生什么:

/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

好的,现在我们知道mysqld skip-grant-tables的进程ID为1759,请继续杀死它:

kill 1759

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

答案 1 :(得分:0)

您使用Config::get('mysql/username')两次,第二次应该是Config::get('mysql/password')

答案 2 :(得分:0)

尝试在阵列中添加端口!对我来说,它有效!默认情况下,端口为8889。您可以通过转到MAMP>首选项,然后转到端口选项卡来更改它。这就是我的想法(我没试过这个!):

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

在这里说,我可能错误......