如何用PHP将MySQL/MariaDB数据库连接到Linux云服务器

你可以通过云服务器轻松连接 MySQL Linux 或 MariaDB Linux,灵活运行应用程序。只要拥有合适的访问权限和配置,成功连接MySQL Linux就变得快捷且简单。

要求

运行Linux(任何发行版)的云服务器。

安装并激活了LAMP协议栈(Apache、MySQL/MariaDB和PHP)。

如果你使用防火墙,必须允许访问MySQL/MariaDB服务器上的端口3306。

如何连接MySQL Linux

数据库通常连接到Linux云服务器,以灵活且大规模地运行应用程序。这种设置允许多个服务或网络应用访问相同的数据,而无需单独的本地安装。云服务器还简化了数据库管理、备份和安全更新。在本教程中,我们将向您展示如何在Linux服务器上搭建MySQL或MariaDB数据库,并用PHP脚本连接。

步骤1:创建样本数据库

在本教程中,我们将使用测试数据库。要创建一个,首先登录:

mysql -u root -p

用以下命令创建测试数据库:

CREATE DATABASE phptest;

现在切换到测试数据库:

USE phptest;

在这里创建一个简单的示例表。在我们的例子中,我们选择一个存放员工的表格:

CREATE TABLE employees (id INT, name VARCHAR(40));

现在再加两名员工:

INSERT INTO employees VALUES (1, "Alice");

INSERT INTO employees VALUES (2, "Bob");

为了验证记录是否正确创建,您可以使用以下SQL查询:

SELECT * FROM employees;

输出应该是这样的:

+------+-------+

| id | name |

+------+-------+

| 1 | Alice |

| 2 | Bob |

+------+-------+

2 rows in set (0,002 sec)

步骤2:创建MySQL/MariaDB用户

为了在保护数据库免受未授权连接的同时启用认证访问,现在你需要创建一个 MySQL/MariaDB 用户。为此,请再次使用MySQL/MariaDB客户端登录数据库服务器:

mysql -u root -p

以下命令创建用户并授予他们我们第一步创建数据库的权限:

CREATE USER Username@Location IDENTIFIED BY Password;

GRANT ALL PRIVILEGES ON DatabaseName.* TO Username@Location;

FLUSH PRIVILEGES;

替换上述命令中的占位符:

DatabaseName用你们数据库的名字。

Username用你想为数据库创建的用户名。

Location其中 PHP 脚本的位置。如果 PHP 脚本和 MySQL 数据库在同一台服务器上,请使用 。否则,使用 PHP 脚本所在服务器的 IP 地址。localhost

Password为用户设置安全密码。

例如,要创建一个名为phpuser的用户,密码为Ig86N3tUa9,他位于与MySQL数据库同一服务器上,并且可以访问phptest数据库,命令应为:

CREATE USER 'phpuser'@'localhost' IDENTIFIED BY 'Ig86N3tUa9';

GRANT ALL PRIVILEGES ON phptest.* TO 'phpuser'@'localhost';

FLUSH PRIVILEGES;

要创建第二个名为phpuser2的用户,该用户从拥有该IP地址的服务器连接,请使用以下命令:192.168.0.1

CREATE USER 'phpuser2'@'192.168.0.1' IDENTIFIED BY 'Rq53yur62I';

GRANT ALL PRIVILEGES ON phptest.* TO 'phpuser2'@'192.168.0.1';

FLUSH PRIVILEGES;

步骤3:创建PHP脚本

为了验证你的PHP应用能否连接到Linux服务器上的数据库,你可以创建一个小型测试脚本。该脚本连接测试数据库,从表中获取数据,并在浏览器中显示。这可以让你确认用户、密码和主机配置正确,数据库是否可访问。

首先,创建测试脚本:

sudo nano /var/www/html/phpconnect.php

接下来,将以下内容插入文件中:

<html>

<head>

<title>Test PHP Connection Script</title>

</head>

<body>

<h3>Welcome to the PHP Connect Test</h3>

<?php

$dbname = DatabaseName;

$dbuser = Username;

$dbpass = Password;

$dbhost = Location;

// Create connection

connect = mysqli_connect(dbhost, dbuser, dbpass, $dbname);

if (!$connect) {

die("Connection failed: " . mysqli_connect_error());

}

// Fetch data

result = mysqli_query(connect, "SELECT id, name FROM employees");

while (row = mysqli_fetch_assoc(result)) {

echo "ID: {row\['id'\]} Name: {row'name'}<br>";

}

mysqli_close($connect);

?>

</body>

</html>

HTML

用对应的数据替换 、 、 和。

例如,如果你想测试脚本与数据库在同一服务器上的本地连接,可以使用:UsernamePasswordLocationHostname

$dbuser = 'phpuser';

$dbpass = 'Ig86N3tUa9';

$dbhost = 'localhost';

为了验证与脚本的远程连接,当脚本位于与数据库不同的服务器时,给变量赋予以下数值:

$dbuser = 'phpuser2';

$dbpass = 'Rq53yur62I';

$dbhost = '192.168.0.2';

如何排查远程MySQL/MariaDB连接的问题

如果你的PHP应用或其他脚本无法连接到MySQL Linux,或者无法从另一台服务器连接到MariaDB Linux,可能会导致各种问题。以下解决方案可能有助于解决问题:

解决方案1:检查用户和权限

如果你在尝试连接MySQL Linux或连接另一台服务器的MariaDB Linux时遇到问题,首先检查以下几点:

你用的是正确的MySQL/MariaDB用户名和密码吗?

这个用户设置的位置是正确的吗?

默认情况下,MySQL/MariaDB 允许用户仅从创建时指定的主机登录。例如,如果你的用户是这样创建的:

CREATE USER 'phpuser'@'localhost' IDENTIFIED BY 'Ig86N3tUa9';

GRANT ALL PRIVILEGES ON phptest.* TO 'phpuser'@'localhost';

FLUSH PRIVILEGES;

那么登录只能在数据库运行的同一服务器上工作()。在不同服务器上的脚本必须为远程IP地址或(所有主机)设置用户。localhost%

解决方案2:命令行连接测试

在检查PHP脚本之前,你应该直接通过MySQL CLI测试连接。在脚本运行的服务器上,使用:

mysql -u username -h host server IP address -p

例如,使用用户名 phpuser2 连接到位于 192.168.0.2 的数据库,命令为:

mysql -u phpuser2 -h 192.168.0.2 -p

如果连接正常,这个命令会让你登录到远程服务器上的 MySQL/MariaDB 客户端。

解决方案三:防火墙

确保所有相关的防火墙规则都已更新,允许数据库服务器的3306端口使用TCP/UDP流量。请记住,所有云服务器都受Cloud Panel默认防火墙策略的约束。

相关推荐
暗暗别做白日梦1 分钟前
Redisson 和redis 实现延迟消息
数据库·redis·缓存
西凉的悲伤6 分钟前
redis和数据库实现分布式锁
java·数据库·redis·分布式
zhougl9968 分钟前
Database(数据库)和 Schema(模式)
数据库·oracle
专注API从业者14 分钟前
告别手动翻页!基于淘宝商品接口 + Open Claw 实现自动化选品与实时监控(附完整 Python 代码)
大数据·运维·数据库·自动化
曹牧17 分钟前
Oracle:xml转义
xml·数据库·oracle
湖南天硕国产SSD17 分钟前
工业存储可靠性进阶:天硕工业固态硬盘动态温控与寿命优化技术实践
网络·数据库·算法·工业存储·天硕存储·工业固态硬盘
Tellmeulovewho18 分钟前
阿里云Linux云服务器部署Python项目——从零到生产环境的完整实战指南
linux·服务器·阿里云
安妮的小熊呢20 分钟前
CRMEB BZ v6.0 使用教程:从安装部署到后台基础配置
php·thinkphp·电商系统·crmeb
我星期八休息21 分钟前
Linux系统编程— Mmap实现⽂件LRU缓存
linux·运维·服务器·数据库·mysql·缓存
换个昵称都难25 分钟前
WebRTC QoS 实战:从原理到弱网优化
开发语言·php·webrtc