Laravel 5.8无法连接到非本地数据库

时间:2019-05-29 05:23:48

标签: php mysql laravel laravel-5.8

我遇到一个新的Laravel项目(5.8)无法连接到非本地数据库的问题。我继续收到“用户拒绝访问...”错误。我知道配置是正确的,因为我有另一个在5.6中运行的项目,它使用相同的配置连接到相同的数据库,并且可以正常工作。看来,一旦我使用除“ localhost”以外的主机名,它就会中断。在我尝试连接到另一个非本地数据库之前,它一直在本地运行。

我相信Laravel没有正确接受主机名。我也重新缓存了所有内容,没有运气。拒绝访问错误始终显示与项目所在计算机相同的本地主机名,而不是环境中的远程主机名,因此我认为它正在尝试连接到该主机。有关如何解决此问题的任何想法?我很困惑,不知道去哪里。

谢谢!

编辑: 我确定没有配置错误,IP访问错误或缓存错误,因为我已经对所有这些可能的问题进行了故障排除(听起来像是其中一个问题)。我的环境和错误如下(以“ my”开头的任何内容都是我出于安全性更改的正确信息):

DB_CONNECTION=mysql
DB_HOST=mysql.myURL.com
DB_PORT=3306
DB_DATABASE=myDbName
DB_USERNAME=myDbUsername
DB_PASSWORD=myDbPassword
SQLSTATE[HY000] [1045] Access denied for user 'myDbUsername'@'NOTmysql.myURL.com' (using password: YES) (SQL: select count(*) as aggregate from `myTable`)

错误中的NOTmysql.myURL.com实际上是网站运行所在服务器的本地主机名,但是myDbUsername是我在配置中设置的用户名。

3 个答案:

答案 0 :(得分:1)

@IanCowan确实尝试使用简单的php connect脚本进行连接。验证这是否在同一存储库上为您工作...只是将该php文件放在/ public文件夹中。

然后打开/浏览该文件的URL。不要忘记更改配置。

这只是为了确保...连接端没有问题。

<?php
    $servername = "localhost";
    $username = "username";
    $password = "password";

    try {
        $conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
        // set the PDO error mode to exception
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        echo "Connected successfully"; 
        }
    catch(PDOException $e)
        {
        echo "Connection failed: " . $e->getMessage();
        }
    ?>

答案 1 :(得分:0)

1。。转到.env文件并检查数据库配置

DB_HOST=localhost
DB_DATABASE=laravelDb
DB_USERNAME=root
DB_PASSWORD=null

2。。然后重新启动apache服务器并刷新页面

3。。退出/关闭并重新运行命令

php artisan serve

4。。清除旧的配置缓存和配置文件

php artisan config:clear
php artisan cache:clear

现在您的错误应该消失了。

答案 2 :(得分:0)

使我尴尬的错误,但我想出了我问题的答案。我的密码中有一个#,它导致#之后的密码部分被作为注释读取,因此它仅使用了密码的一部分。我将密码放在引号中,一切都可以正常工作。