2016-09-13 83 views
2

我在我的Macbook Air(OS X版本10.11.2)上创建了一个新用户。新用户拥有完整的管理员权限。我正在使用MAMP。 MySQL端口设置为3306.我可以连接到MySQL,其他一切都很好。我所有的Laravel项目都停止连接到MySQL。当我尝试使用Laravel 5.3不会连接到mysql

php artisan migrate 

我得到:

[PDOException]        
SQLSTATE[HY000] [2002] Connection refused 

这里是我的.ENV的数据库部分:

DB_CONNECTION=mysql 
DB_HOST=127.0.0.1 
DB_PORT=3306 
DB_DATABASE=store 
DB_USERNAME=clerk 
DB_PASSWORD=inventory 

我已经使用root用户名和密码尝试。我尝试过使用不同的端口。我尝试将主机切换到本地主机。我已验证用户名和密码是否正确,并且用户有权访问数据库。 这里是我的config/database.php中文件的MySQL的部分:

'mysql' => [ 
    'driver' => 'mysql', 
    'host' => env('DB_HOST', '127.0.0.1'), 
    'port' => env('DB_PORT', '3306'), 
    'database' => env('DB_DATABASE', 'store'), 
    'username' => env('DB_USERNAME', 'clerk'), 
    'password' => env('DB_PASSWORD', 'inventory'), 
    'charset' => 'utf8', 
    'collation' => 'utf8_unicode_ci', 
    'prefix' => '', 
    'strict' => true, 
    'engine' => null, 
], 

我一直在寻找了几天,我似乎无法找到答案。我的旧Laravel 5.2项目也不会连接。我很确定这是由于创建一个新用户而引起的,但我对MySQL的了解不足以找出问题所在。

+0

你可以连接'mysql'命令行工具或MySQL Workbench程序或同等功能吗?你尝试过使用'localhost'而不是'127.0.0.1'吗? – tadman

+0

@tadman |我在原帖中回答了这两个问题。 –

+1

连接拒绝意味着mysql没有运行,或者不在监听。这意味着用户/密码在这个阶段是不相关的。你甚至没有连接到MySQL的TRY并登录。如果这是一个权限的话,你会得到“访问被拒绝” –

回答

0

在按照我的建议在您的问题下面的评论中提到的故障排除流程后,所有内容都应按预期工作。

如果情况并非如此,那么您一定会错过一些东西; ......我猜想的一个PATH问题。

我建议你export your database,卸载你的MySQL,然后在here下载一个新的。

按照方法详述here寻找可能的修复方法。

有了这个,你的挑战肯定会得到解决。

0

试着改变你的DB_HOST =本地主机:3306

0

您定义engine = null。据我所知,引擎在MySqlGrammar.php内部特别用于编译创建查询。我只看到了VIEWS的空引擎。

尝试以下配置:

'mysql' => [ 
    'driver' => 'mysql', 
    'host' => env('DB_HOST', '127.0.0.1'), 
    'port' => env('DB_PORT', '3306'), 
    'database' => env('DB_DATABASE', 'store'), 
    'username' => env('DB_USERNAME', 'clerk'), 
    'password' => env('DB_PASSWORD', 'inventory'), 
    'charset' => 'utf8', 
    'collation' => 'utf8_unicode_ci', 
    'prefix' => '', 
], 

你没有提到它在你的问题,并把它从一个终端

mysql -uclerk -pinventory -h127.0.0.1 -P3306 store 

以下作品会不会是它需要

mysql -uclerk -pinventory -hlocalhost -P3306 store 

你可以在你的项目中检查一个info.php文件ct再次检查一下,将PDO作为模块的参考,看起来一切正常。

<?php 
phpinfo(); 

然后还可以玩一下PDO php脚本,看看你的连接是否正常工作。喜欢的东西:

<?php 
$servername = "127.0.0.1"; 
$username = "clerk"; 
$password = "inventory"; 

try { 
    $conn = new PDO("mysql:host=$servername;port=3306;dbname=store;", $username, $password); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    echo "Connected successfully"; 
} catch (PDOException $e) { 
    echo "Connection failed: " . $e->getMessage(); 
} 

别的东西,你也可以检查一个虚拟的路线是什么env('DB_DATABASE')等给你里面。

更新的东西检查2016.09。15

若要确保env()被获取正确的信息包括下面的路线,然后包括以下的输出:

Route::get('dbtest', function() { 
    $config = [ 
     'host' => env('DB_HOST'), 
     'port' => env('DB_PORT'), 
     'database' => env('DB_DATABASE'), 
     'username' => env('DB_USERNAME'), 
     'password' => env('DB_PASSWORD'), 
    ]; 
    dd($config); 
}); 

然后还访问mysql作为根用户和包括的输出select语句:

mysql> select host, user, password, authentication_string, password_expired from mysql.user; 

当你使用MAMP请务必从/Applications/MAMP/Library/bin/mysql

使用mysql命令行工具
+0

试过你的建议:mysql-cores -pinventory -hlocalhost -P3306商店工作正常。 PDO脚本也工作得很好。 –

+0

如果-hlocalhost工作,那么您需要将.env文件中的DB_HOST从127.0.0.1更新到localhost。我添加了两个其他的东西,你可以检查。 –

0

它已经解决了。几小时后,我决定采取@nyedidikeke的建议,并重新安装MySQL。我正在使用MAMP,我一直想停止使用它一段时间。我卸载了它,并通过Homebrew安装了mysql。一切都很好,谢谢你的帮助!