gpt4 book ai didi

php - MySQL 连接不工作

转载 作者:行者123 更新时间:2023-11-29 12:03:56 24 4
gpt4 key购买 nike

$con = mysqli_connect('<remote server ip address>','root','*******','CSV_DB',);
if (!$con) {
die('Could not connect: ' . mysqli_error($con));
}

我有一个简单的程序来连接到使用 phpmyadmin 创建的 mysql 服务器,但是每次尝试连接时都会收到“无法连接”消息。

我知道这可能是许多不同的问题,但我确实在寻求有关如何排除故障的建议。

当我以 root 身份 ssh 到服务器时,我可以使用终端访问服务器,一切都很好。然而,这个连接使用相同的用户名/密码/数据库/等,我似乎无法登录。此外,mysqli_error永远不会打印 - 不知道为什么。

最佳答案

这里是启用 MySQL 远程连接的快速 list ,但请先阅读 (6)。如果我遗漏了什么,请随时编辑。

1) 您的远程用户正在通过使用适当的 user,host 创建的帐户进行连接条目(查看 select user,host from mysql.user order by 1,2 的输出)。如果没有,请查看 CREATE USER 和/或 GRANT 命令。检查 SHOW GRANTS 的输出对于用户。

2) 你已经完成了 flush privileges; (有人说没必要,有人说没必要)。

3a) 通过查看 This Document 中的信息找到下面 3b) 中引用的 mysql 配置文件。 (或者对于 Windows,可能沿着 C:\ProgramData\MySQL\MySQL Server 5.NNN 路径)。它因 Linux 发行版而异。

3b) 您已修改并保存my.ini (Windows) 或 my.cnf (Linux) 并更改 bind-address远离 127.0.0.1localhost ,赞成0.0.0.0 。您已创建删除了以下行:#skip-networking 。它看起来类似于:

[mysqld]
bind-address=0.0.0.0
#skip-networking

4) 重新启动 mysql 守护进程。这如何因发行版而异。

5) 防火墙问题。确保端口,默认为3306 ,对外界开放(实际上可能只是您的内部网)。这包括任何其他防火墙层,例如 AWS EC2 安全组或类似的(如果有)。

6) 了解存在与此相关的安全风险。除非您了解将 mysql 服务器暴露给远程连接,否则不要执行此操作。

7) 请经常使用 select 进行安全评估上述 1. 中列出的声明包括审查 SHOW GRANTS对于那些用户。不要过度授予用户不必要的通配符。相反,应为用户提供完成工作所需的最低权限。

8) 经常通过常规日志和错误日志检查失败的连接尝试,如下简要介绍。

对于入站,可以查看通用查询日志。

select @@general_log; -- a 1 indicates it is turned on for capture
select @@general_log_file; -- the file that it logs to

因此所有查询都可以记录到 General Query Log如果该设置已打开。检查日志中的“connect”,尤其是 Access denied for user查看失败的尝试。定期执行此操作(不是每隔几年)。我每天至少做两次。请注意,您显然可以通过外部程序自动生成报告。外部世界将攻击您的服务器以进入,如下图所示。这是一个现实;做好准备迎接它。

enter image description here

查看 The Error Log 的手册页还要根据您的版本记录警告级别和详细程度设置。

我建议您按日期创建备份副本(如此命名),并在备份后删除日志文件,以便在备份后重新开始。日志文件的大小可能会迅速增大,尤其是常规日志。不要忘记您是否打开或关闭了日志记录设置。

您可以使用这两个日志来确定您的连接尝试在此处的步骤中是否通过了防火墙。

关于php - MySQL 连接不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31887820/

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