Php SQLSTATE[28000][1045]拒绝用户访问';根';

Php SQLSTATE[28000][1045]拒绝用户访问';根';,php,laravel,eloquent,Php,Laravel,Eloquent,我有我的项目准备好了,我刚刚上传到一个共享托管服务器。在我的本地机器上,一切正常,但页面显示错误: “拒绝用户‘root’@‘localhost’(使用密码:否)的SQLSTATE[28000][1045]访问” 我已经检查了我的密码和用户名,它们都是正确的。服务器要求也是如此,因为我已经有2个其他Laravel站点使用相同的主机运行 我已经完成了php-artisan-config:cache-php-artisan-cache:clear但没有进展 这可能是什么原因造成的?如何解决?我迫切需

我有我的项目准备好了,我刚刚上传到一个共享托管服务器。在我的本地机器上,一切正常,但页面显示错误: “拒绝用户‘root’@‘localhost’(使用密码:否)的SQLSTATE[28000][1045]访问”

我已经检查了我的密码和用户名,它们都是正确的。服务器要求也是如此,因为我已经有2个其他Laravel站点使用相同的主机运行

我已经完成了php-artisan-config:cache-php-artisan-cache:clear但没有进展


这可能是什么原因造成的?如何解决?我迫切需要一个解决方案,因为这让我一夜没睡。

不同的配置?它表示您的密码为空;)

“我已检查了密码和用户名”

(使用密码:否)

app/config/database.php:

    'mysql' => array(
    'read' => array(
        'host' => '192.168.1.1',
    ),
    'write' => array(
        'host' => '196.168.1.2'
    ),
    'driver'    => 'mysql',
    'database'  => 'database',
    'username'  => 'root',
    'password'  => '<insert password here?>',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
),
'mysql'=>数组(
'读取'=>数组(
'主机'=>'192.168.1.1',
),
'写入'=>数组(
“主机”=>“196.168.1.2”
),
“驱动程序”=>“mysql”,
“数据库”=>“数据库”,
'用户名'=>'根',
'密码'=>'',
“字符集”=>“utf8”,
“排序规则”=>“utf8\U unicode\U ci”,
'前缀'=>'',
),

尝试使用这3个artisan命令

1)
php artisan配置:清除

2) php artisan缓存:清除

3) php artisan配置:缓存

打开终端并键入

sudo mysql -u root -p
它会在mysql中提示您,在这里您可以启动任何mysql命令

使用mysql表更改表类型,所以我们可以使用空密码。贝娄是它的指挥者

USE mysql;
现在,我们通过以下命令更改表的类型

UPDATE user SET plugin='mysql_native_password' WHERE User='root';
exit;
service mysql restart
现在我们必须刷新特权,因为我们使用了更新。如果直接对授权表使用INSERT、UPDATE或DELETE,则需要使用FLUSH权限才能重新加载授权表

FLUSH PRIVILEGES;
现在通过以下命令退出mysql

UPDATE user SET plugin='mysql_native_password' WHERE User='root';
exit;
service mysql restart
现在通过以下命令重新启动mysql服务器

UPDATE user SET plugin='mysql_native_password' WHERE User='root';
exit;
service mysql restart
希望这能有所帮助


谢谢。

无论何时部署项目,通常都应该在生产部署例程中运行php-artisan-config:cache命令。我建议你

  • 删除配置缓存文件
  • 刷新应用程序缓存
  • 创建缓存文件以加快配置加载
  • 要执行此操作,请在命令行上运行以下Artisan命令

    php artisan config:clear
    php artisan cache:clear
    php artisan config:cache
    
    如果您无权访问服务器上的命令行,则可以通过向路由添加以下内容以编程方式执行命令:

    Route::get('/clear-cache', function() {
        $exitCode = Artisan::call('config:clear');
        $exitCode = Artisan::call('cache:clear');
        $exitCode = Artisan::call('config:cache');
        return 'DONE'; //Return anything
    });
    

    然后从浏览器中调用清除缓存路由。

    是否检查了那里的t.evn文件和凭据?如果抛出相同错误,请尝试手动访问数据库。我曾经犯过同样的错误,这是因为数据库本身不是laravelshow us.env文件。您在.env文件中使用了错误的详细信息。请再次检查。您应该在此处添加您的env文件设置,以便我们可以看到问题。这里是我的数据库详细信息。env fileDB_CONNECTION=mysql db_HOST=127.0.0.1 db_PORT=3306 db_DATABASE=cabyzen db_USERNAME=cabyzen db_PASSWORD=@xxxxxxxxx您是否尝试逐一使用以上所有命令,我希望它能解决您的问题。我刚刚用本地计算机上的文件更改了.env文件的内容,并再次确认了数据库用户名和密码,但没有用。我仍然有此错误。已确认的本地计算机默认有用户名:root和密码:我认为服务器没有看到我的.env文件。这可能是什么原因?您在配置中拼错了密码吗?因为你们mysql说它没有密码谢谢大家。这个问题已经解决了。php artisan缓存:只需清除即可。php artisan配置:缓存是我的问题。第二个命令缓存已上载到服务器的数据库参数,该服务器将覆盖.env文件中设置的参数。所以我所做的就是运行php artisan缓存:清除,然后重新上传。希望这能帮助其他人。