VS Code 断连、Navicat 被拒、logrotate 报错:LAMP 环境收尾踩坑三连

13 阅读2分钟

在 CentOS 7 上手动搭完 LAMP 环境后,本以为大功告成,结果在收尾阶段又接连踩了三个不大不小的坑。记录一下排查过程和最终解法。


一、VS Code 远程连接突然断开

现象:关闭 VS Code 后重新打开,Remote-SSH 连接 192.168.179.128 失败,日志显示 Opening exec server 后立即断开。

原因:登录虚拟机检查发现 sshd 服务没有运行。之前只顾着给 Apache 和 MySQL 设置开机自启,完全忘了 SSH 服务这回事。

解决:

systemctl start sshd      # 临时启动
systemctl enable sshd     # 设置开机自启

执行后 VS Code 恢复正常连接。


二、Navicat 远程连接 MySQL 被拒绝

现象:在物理机上用 Navicat 连接虚拟机的 MySQL,报错:

Host 'ip地址' is not allowed to connect to this MySQL server

原因:MySQL 默认只允许 localhost 本地连接,远程访问需要额外授权。

解决:

  1. 编辑 /etc/my.cnf,在 [mysqld] 区块下添加:
    bind-address = 0.0.0.0
    
  2. 登录 MySQL,执行授权命令:
    CREATE USER 'root'@'%' IDENTIFIED BY '你的密码';
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    
  3. 重启 MySQL 服务:
    systemctl restart mysqld
    

重新用 Navicat 连接,成功。


三、开启慢查询日志后,logrotate 报错

现象:按教程配置了 MySQL 慢查询日志,并用 logrotate 设置每日切割,但手动测试时报错:

Access denied for user 'root'@'localhost'

原因:logrotate 配置中的 postrotate 脚本调用了 mysqladmin flush-logs,但没有提供 MySQL 密码,导致认证失败。

解决:开发环境对日志连续性要求不高,直接注释掉 postrotate 段落,让 logrotate 只负责物理切割和清理。修改后重新测试,不再报错,归档文件正常生成。


四、关于通用查询日志的取舍

老师的笔记中还要求手动创建 mysql.log 并开启 general_log(通用查询日志)。

但通用查询日志会记录每一条 SQL 语句,对性能影响极大,且日志文件会迅速膨胀,在开发阶段弊大于利。因此我只开启了慢查询日志用于性能分析,没有执行通用日志的配置。如果老师验收,解释为“开启了更符合生产规范的慢查询日志”即可。


本人真实踩坑记录,内容由AI帮助润色。