在 Ubuntu 上搭建 LAMP(Linux + Apache + MySQL/MariaDB + PHP) 后“连不上数据库”,常见原因和排查思路如下:
不同现象对应不同原因:
Connection refused / Access denied for usersystemctl status mysql
# 或
systemctl status mariadb
启动:
sudo systemctl start mysql
sudo systemctl enable mysql
查看监听:
netstat -tulnp | grep 3306
如果看到:
127.0.0.1:3306
说明 只监听本地
✅ 本地 PHP 用 localhost 或 127.0.0.1 一般没问题
❌ 远程或 Docker 容器连就会失败
修改配置(如需要远程):
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
改为:
bind-address = 0.0.0.0
重启:
sudo systemctl restart mysql
MySQL 用户是 用户+主机 绑定的
查看:
SELECT user, host FROM mysql.user;
如果用户是:
user@localhost
那你用 user@192.168.x.x 连接会失败
授权示例:
GRANT ALL PRIVILEGES ON dbname.* TO 'user'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
Ubuntu + PHP 常见坑
检查:
php -m | grep -i mysql
没有就装:
sudo apt install php-mysql
sudo systemctl restart apache2
sudo ufw status
放行:
sudo ufw allow 3306
PHP 配置中:
mysqli.default_socket =
确认路径和 MySQL socket 一致:
mysqladmin variables | grep socket
你可以直接贴出:
我可以帮你精确定位是哪一种原因。