所以我的数组包含我的凭据。
'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%正确的。我还通过命令行和工作台进行了测试。
答案 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'
)
在这里说,我可能错误......