php - 如何以编程方式在共享 Linux 托管计划上创建 MySQL 数据库

标签 php mysql shared-hosting cpanel

是否有一种可靠的方法可以从 PHP 页面以编程方式在共享 Linux 托管计划上创建 MySQL 数据库和 MySQL 用户?例如,如果我知道我的 cpanel 访问信息和/或 FTP 信息,是否可以通过 API 或 Hook 访问 cpanel 或 phpmyadmin?

有时我会在某些网站和产品中看到这种情况,但不知道他们是如何做到的。

最佳答案

感谢@Alex C,他让我走上了正轨。以下内容适用于许多共享托管计划,但您需要首先检查他们的政策。我的在技术支持票中给我回信说:“你必须通过 cpanel 脚本实现自动化。”所以,这就是这个。

在下面的示例中,我已经购买了 root.com 作为我的共享托管计划的主根域。我想要设置一个名为“user_myexample”的数据库,并为用户“user_myexamp”分配了完全权限的密码“myexample”。如果“user_”前缀和“myexamp”看起来很奇怪 - 这是因为 cpanel 有一个基于 root 用户的 cpanel 用户帐户的前缀,而数据库用户名最多只能是 7 个字符。

为了连接到 Cpanel 来实现这一点,我输入了一个 cpanel 主页 URL(根据托管计划而变化),以便可以对其进行解析和重用。另外,我还提供了 root.com 的 cpanel 用户/密码信息。

echo 语句只是输出响应,无论每个 HTTP GET 请求是否有效。您可能想检查一下,看看是否有一些东西可以从输出中解析出成功/失败。

请注意,某些托管计划会阻止 file_get_contents 连接到 URL,因此您可能必须使用 fopen($sURL, 'r') 或 Curl API 进行切换。

<?php

// @ input vars
$sPastedCpanelHomepageURL = 'https://root.com:2083/frontend/x3/index.html';
$sNewDB = 'myexample';
$sNewDBUser = 'myexamp'; // must be 7 chars max
$sNewDBPass = 'myexample';
$sCPanelUser = 'user';
$sCPanelPass = 'pass';

// @ processing
$sCP = dirname($sPastedCpanelHomepageURL);
$sCP = str_replace('://','://' . $sCPanelUser . ':' . $sCPanelPass . '@',$sCP);

$sPrefix = substr($sCPanelUser, 0, 7) . '_';

$sTask1 = '/sql/addb.html?';
$sTask2 = '/sql/adduser.html?';
$sTask3 = '/sql/addusertodb.html?';

$sNewDB = urlencode($sNewDB);
$sNewDBUser = urlencode($sNewDBUser);
$sNewDBPass = urlencode($sNewDBPass);
$sCPanelUser = urlencode($sCPanelUser);
$sCPanelPass = urlencode($sCPanelPass);

$sNewDBUser = substr($sNewDBUser, 0, 7);

$asData1 = array(
  'db' => $sNewDB
);
$sData1 = http_build_query($asData1);
$s = file_get_contents($sCP . $sTask1 . $sData1);
echo "$s\n";

$asData2 = array(
  'user' => $sPrefix . $sNewDBUser,
  'pass' => $sNewDBPass,
  'pass2' => $sNewDBPass
);
$sData2 = http_build_query($asData2);
$s = file_get_contents($sCP . $sTask2 . $sData2);
echo "$s\n";

$asData3 = array(
  'user' => $sPrefix . $sNewDBUser,
  'db' => $sPrefix . $sNewDB,
  'update' => '',
  'ALL' => 'ALL'
);
$sData3 = http_build_query($asData3);
$s = file_get_contents($sCP . $sTask3 . $sData3);
echo "$s\n";

关于php - 如何以编程方式在共享 Linux 托管计划上创建 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3219799/

相关文章:

php - mysql 中的舍入不能按预期工作

c++ - C++ 程序中的 SQL 查询语法错误,但在 MySQL Workbench 中有效

php - IMAP 适用于我的本地计算机,但不适用于共享主机

php - Doctrine mysql,检查数组是否在其他数组中

php - 如何授予对 PostgreSQL 表的有限权限?

mysql - 如何知道下一条记录是否存在

python - sqlalchemy自动增量值作为外键mysql

php - 如何配置和传输 MySQL(使用登录凭据)从 XAMPP 本地网络服务器到基于 Hostgator/Linux 的托管服务器?

php - 将 HTML Tidy 可执行文件与 php 一起使用,而不是编译

php - 让 MySQL 列从多个选择中更新