【发布时间】:2020-01-31 04:17:10
【问题描述】:
我在 centos 7 上安装了全新安装的 mysql-community-server 5.7。
我可以远程成功连接到mysql服务器,也可以在本地使用mysql命令。
但是在尝试连接 laravel(最新版本 5.8.*)时,我收到错误 Host 'SERVER_IP_ADDRESS' is not allowed to connect to this MySQL server.
(在here 和here 中有很多关于此的帖子,但事实并非如此,问题似乎并没有消失。)
所以这让我觉得这可能不是 mysql 问题。
这是来自/etc/my.cnf的mysql conf:
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_HOST 从 127.0.0.1 更改为 localhost 、 server_ip_address、domain_name ……甚至在 .env 文件中。
将DB_USERNAME 和DB_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 |
+----------------------------------------------------------------------+
我也:
- 确保 laravel 没有缓存任何配置。
- 每次更改都刷新权限。
似乎没有一个用户在工作。
除了最后两行之外,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
【问题讨论】:
-
您检查过 MySQL 服务器日志是否有任何进一步的错误消息?
-
laravel 应用和数据库在同一台主机上吗?您可以使用 vanilla php 数据库连接连接到数据库吗?
-
是的,它们在同一台服务器上,我可以使用 php 脚本 (hostinger.com/tutorials/how-to-connect-php-to-mysql) 成功地远程和本地连接到数据库,这绝对是 laravel 的问题。
标签: php mysql laravel laravel-5 centos7