在 Ubuntu 上用 PHP 连接数据库,通常分 MySQL / MariaDB 和 PostgreSQL 两种常见情况。下面以 PHP + MySQL(最常用) 为例,一步一步说明。
sudo apt update
sudo apt upgrade -y
sudo apt install php php-mysql mysql-server -y
如果你用的是 PHP 8.x + Nginx/Apache,也可以:
sudo apt install php8.1 php8.1-mysql
# Apache
sudo apt install apache2 -y
# 或 Nginx
sudo apt install nginx php-fpm -y
sudo systemctl start mysql
sudo systemctl enable mysql
设置 root 密码(首次):
sudo mysql_secure_installation
sudo mysql -u root -p
CREATE DATABASE testdb;
CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEES ON testdb.* TO 'testuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
<?php
$host = "localhost";
$user = "testuser";
$pass = "password";
$db = "testdb";
$conn = new mysqli($host, $user, $pass, $db);
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
echo "数据库连接成功";
?>
<?php
try {
$pdo = new PDO(
"mysql:host=localhost;dbname=testdb;charset=utf8mb4",
"testuser",
"password"
);
echo "数据库连接成功";
} catch (PDOException $e) {
echo "连接失败: " . $e->getMessage();
}
?>
如果是 Apache:
sudo cp test.php /var/www/html/
浏览器访问:
http://localhost/test.php
mysqli / pdo_mysqlphp -m | grep mysqli
没有就安装:
sudo apt install php-mysql
sudo systemctl restart apache2
localhostCREATE USER 'testuser'@'%' IDENTIFIED BY 'password';
并修改 bind-address = 0.0.0.0
如果你用的是 PostgreSQL / SQLite / Laravel / Docker,告诉我我可以给你对应配置。