在 Ubuntu 下,PHP 连接 MySQL 通常使用 MySQLi 或 PDO 扩展。下面分步骤说明,从安装到示例代码。
php -v
如果没有安装:
sudo apt update
sudo apt install php php-cli
sudo apt install mysql-server
sudo apt install php-mysql
该包会同时启用 mysqli 和 pdo_mysql
sudo systemctl restart apache2
sudo systemctl restart php8.1-fpm
sudo systemctl restart nginx
php -m | grep -E 'mysqli|pdo_mysql'
或创建测试文件:
<?php
phpinfo();
<?php
$host = 'localhost';
$user = 'root';
$password = 'your_password';
$database = 'testdb';
$conn = new mysqli($host, $user, $password, $database);
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
echo "MySQLi 连接成功";
$conn->close();
<?php
$host = 'localhost';
$db = 'testdb';
$user = 'root';
$pass = 'your_password';
$charset = 'utf8mb4';
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
try {
$pdo = new PDO($dsn, $user, $pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "PDO 连接成功";
} catch (PDOException $e) {
die("连接失败: " . $e->getMessage());
}
Access denied for user 'root'@'localhost'
解决:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password';
FLUSH PRIVILEGES;
如果 MySQL 使用 socket:
$conn = new mysqli('localhost', 'root', 'password', 'testdb', null, '/var/run/mysqld/mysqld.sock');
查看 PHP 版本:
php -v
安装对应版本扩展(如 PHP 8.1):
sudo apt install php8.1-mysql
如果你愿意,可以告诉我:
我可以给你更精确的配置方案。