所以这是包含我的凭据的数组。
'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%正确的。我还通过命令行和工作台进行了测试。
您确定设置了密码吗?如果您尝试通过命令行连接,会发生以下情况:
/Applications/MAMP/Library/bin/mysql -uroot
此外,MAMP中root
的密码为root
。这不是深奥/秘密的秘密。您的示例中的*
有效吗?
并且在连接器中,您是否尝试过使用localhost
而不是127.0.0.1
?我已经看到一些MySQL设置可以同时使用一种,但不能同时使用另一种。
EDIT:如果您以某种方式破坏了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
密码现在应该可以正常工作。
尝试将端口添加到阵列中!对我来说,它奏效了!默认端口是8889。您可以通过以下方法更改它:转到MAMP>首选项,然后转到端口选项卡。这就是我的想法(我还没有尝试过!):
'mysql' => array(
'host' => '127.0.0.1',
'username' => 'root',
'password' => '*',
'port' => '8889',
'db' => 's'
)
您两次使用Config::get('mysql/username')
,第二个应该是Config::get('mysql/password')