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 框架的设计哲学。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
最佳答案

看是不是写了内网地址

2年前 评论
MZ0x01 (作者) 2年前
bluememory (楼主) 2年前
bluememory (楼主) 2年前
讨论数量: 7

看是不是写了内网地址

2年前 评论
MZ0x01 (作者) 2年前
bluememory (楼主) 2年前
bluememory (楼主) 2年前

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

2年前 评论
bluememory (楼主) 2年前

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

mysql -hxxxx.mysql.rds.aliyuncs.com -utest -p
2年前 评论

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