gpt4 book ai didi

php - Laravel 主机不允许连接到此 mysql 服务器 (Centos 7)

转载 作者:行者123 更新时间:2023-11-29 15:36:30 25 4
gpt4 key购买 nike

我在 centos 7 上全新安装了 mysql-community-server 5.7。我可以成功地远程连接到 mysql 服务器,也可以在本地使用 mysql 命令连接到 mysql 服务器。但是当尝试连接laravel(最新版​​本5.8.*)时,我收到错误主机'SERVER_IP_ADDRESS'不允许连接到此MySQL服务器。

(有关于此问题的精彩帖子,如 herehere ,但事实并非如此,问题似乎并没有消失。)

所以这让我觉得这可能不是 mysql 问题。

这是来自 /etc/my.cnf 的 mysql 配置:

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

我正在运行 PHP-FPM 和 nginx 作为反向代理,一切正常,直到 laravel 尝试连接到数据库。

我还尝试将 DB_HOST127.0.0.1 更改为 localhost 、 server_ip_address、domain_name,...即使在 .env 文件。将 DB_USERNAMEDB_PASSWORD 更改为随机的,看看我是否收到不同的错误,并坚持相同的错误。

MySQL用户表:

+---------------+-----------+
| user | host |
+---------------+-----------+
| deka | % |
| root | % |
| deka | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+---------------+-----------+

(按照其他帖子的指示删除了主机名“%”或“_”的每个用户记录,并重新创建了对数据库具有完全权限的用户。即使没有使用通配符的用户,它也不起作用。)

root 用户授予:

+---------------------------------------------------------------------+
| Grants for root@localhost |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+

deka 用户授权:

+----------------------------------------------------------------------+
| Grants for deka@% |
+----------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'deka'@'%' |
| GRANT ALL PRIVILEGES ON `dekatech`.* TO 'deka'@'%' WITH GRANT OPTION |
+----------------------------------------------------------------------+

我也:

  1. 确保 laravel 没有缓存任何配置。
  2. 每次更改都会刷新权限。

似乎没有一个用户可以工作。

除了最后两行之外,mysql 日志文件看起来也很标准。

2019-10-02T20:54:53.246940Z 0 [Warning] CA certificate ca.pem is self signed.
2019-10-02T20:54:53.249171Z 0 [Note] Server hostname (bind-address): '*'; port: 3306
2019-10-02T20:54:53.249220Z 0 [Note] IPv6 is available.
2019-10-02T20:54:53.249235Z 0 [Note] - '::' resolves to '::';
2019-10-02T20:54:53.249263Z 0 [Note] Server socket created on IP: '::'.
2019-10-02T20:54:53.289907Z 0 [Note] Event Scheduler: Loaded 0 events
2019-10-02T20:54:53.290223Z 0 [Note] /usr/sbin/mysqld: ready for connections.
Version: '5.7.27-log' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Server (GPL)
2019-10-02T20:56:09.047393Z 2 [Warning] IP address 'SERVER_IP_ADDRESS' could not be resolved: Name or service not known
2019-10-02T20:56:19.052216Z 2 [Note] Got timeout reading communication packets

最佳答案

我的 .env 文件中有重复的“DB_HOST”,这导致了问题。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_HOST=mysql => Faulty line (which was previously used on a docker dev environment (laradock))
DB_PORT=3306
DB_DATABASE=XXXX
DB_USERNAME=XXXX
DB_PASSWORD=XXX

如果 Laravel 能发出警告就好了,所有这些麻烦都是因为一个过度写入的变量。

关于php - Laravel 主机不允许连接到此 mysql 服务器 (Centos 7),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58192122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com