在 Ubuntu 上用 PHP 连接数据库,通常分为 MySQL / MariaDB 和 其他数据库(如 PostgreSQL) 两种情况。下面以最常见的 PHP + MySQL(或 MariaDB) 为例,一步一步说明。
sudo apt update
sudo apt upgrade
sudo apt install php php-mysql mysql-server
如果你用的是 Nginx:
sudo apt install nginx
如果你用的是 Apache:
sudo apt install apache2
sudo systemctl start mysql
sudo systemctl enable mysql
sudo mysql_secure_installation
sudo mysql -u root -p
在 MySQL 中执行:
CREATE DATABASE testdb;
CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON testdb.* TO 'testuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
创建文件:
sudo nano /var/www/html/db_test.php
内容:
<?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 "数据库连接成功";
?>
浏览器访问:
http://localhost/db_test.php
<?php
$host = "localhost";
$db = "testdb";
$user = "testuser";
$pass = "password";
try {
$pdo = new PDO("mysql:host=$host;dbname=$db", $user, $pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "数据库连接成功";
} catch (PDOException $e) {
echo "连接失败: " . $e->getMessage();
}
?>
php -v
sudo tail -f /var/log/apache2/error.log
# 或
sudo tail -f /var/log/nginx/error.log
sudo systemctl status mysql
localhost 而非 127.0.0.1sudo apt install php-pgsql postgresql
PHP 示例:
$conn = pg_connect("host=localhost dbname=testdb user=testuser password=password");
如果你告诉我:
我可以给你更精确的连接示例。