在 Ubuntu 上用 PHP 连接 MySQL,通常分 环境准备 和 代码连接 两部分。下面以 Ubuntu 20.04/22.04 + PHP 8.x + MySQL 8 为例说明。
sudo apt update
sudo apt install mysql-server
sudo mysql_secure_installation
sudo apt install php php-mysql
如果是 Web 服务器:
sudo apt install apache2 libapache2-mod-php
sudo apt install nginx php-fpm
sudo systemctl restart apache2
# 或
sudo systemctl restart php8.1-fpm
sudo mysql -u root -p
CREATE DATABASE testdb;
CREATE USER 'phpuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON testdb.* TO 'phpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
<?php
$host = "localhost";
$user = "phpuser";
$pass = "password";
$db = "testdb";
$conn = new mysqli($host, $user, $pass, $db);
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
echo "MySQL 连接成功";
?>
<?php
$host = "localhost";
$db = "testdb";
$user = "phpuser";
$pass = "password";
try {
$pdo = new PDO(
"mysql:host=$host;dbname=$db;charset=utf8mb4",
$user,
$pass
);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "PDO 连接成功";
} catch (PDOException $e) {
echo "连接失败: " . $e->getMessage();
}
?>
php -m | grep mysqli
php -m | grep pdo_mysql
确保 MySQL 用户是 localhost,不是 %
可改为:
$conn = new mysqli("127.0.0.1", $user, $pass, $db);
放到:
/var/www/html/test.php
浏览器访问:
http://localhost/test.php
如果你用的是 Docker / Laravel / Ubuntu 版本不同,可以告诉我,我给你对应方案。