Laravel8连接MySQL,DB_HOST的规则是什么

环境:Laravel8 + PHP7.4 + Mysql8

之前使用mysql版本是5.6的,在项目里面都是正常运行的,今天同事说他买了MySQL8的,让我切换一下看看有没有问题。我就马上把env文件的mysql配置改了一下,

DB_CONNECTION=mysql
DB_HOST=xxxx.mysql.rds.aliyuncs.com
DB_PORT=3306
DB_DATABASE=test
DB_USERNAME=test
DB_PASSWORD=XXXXXX

其他都没有变,然后随便运行一个接口,就报错:

<html>

<head>
    <title>504 Gateway Time-out</title>
</head>

<body bgcolor="white">
    <center>
        <h1>504 Gateway Time-out</h1>
    </center>
    <hr>
    <center>nginx/1.10.3 (Ubuntu)</center>
</body>

</html>

laravel.log日志如下:

[2022-08-04 04:58:57] local.ERROR: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution (SQL: select * from `user` where `id` = 1 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 2002): SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution (SQL: select * from `user` where `id` = 1 limit 1) at /home/vagrant/www/test/vendor/laravel/framework/src/Illuminate/Database/Connection.php:712)

在网上搜索了一番,发现要把DB_HOST改为ip地址的,试了之后。确实成功了。但是不知道为什么?【这个xxxx.mysql.rds.aliyuncs.com是公网地址】

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

看是不是写了内网地址

1周前 评论
ModStart (作者) 1周前
bluememory (楼主) 1周前
bluememory (楼主) 1周前
讨论数量: 7

看是不是写了内网地址

1周前 评论
ModStart (作者) 1周前
bluememory (楼主) 1周前
bluememory (楼主) 1周前

楼上没错,看一下是否在一个内网,如果不在,申请公网链接地址

1周前 评论
bluememory (楼主) 1周前

遇事不要慌, 先用命令连下服务器

mysql -hxxxx.mysql.rds.aliyuncs.com -utest -p
1周前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!