在我们的服务器上,我们有很多域名,我们使用plesk 12.5.30。在一个域上,我想让用户只能在php中在该域中创建自己的数据库。这不是问题,但我为用户创建了第一个数据库,并为该数据库设置了用户名和密码。所以用户可以登录到该数据库,但他没有权限在php中创建新的数据库,所以这就是我所做的。
在plesk中我去了全局phpmyadmin(因为该域的本地域没有特权选项),而不是该域的本地域,我给了用户创建数据库的权限,但是有一个问题。当他创建数据库时,它不会显示在他的域中,但它会显示在根目录中。您可以在全局phpmyadmin中查看数据库,但不能查看本地数据库,并且plesk也看不到它。最糟糕的是,现在用户可以访问服务器上的每个数据库。
我的问题是这个。在plesk中,如何授予用户使用php创建数据库的权限,但仅限于他的域。
答案 0 :(得分:2)
在Plesk中,客户可以访问API-RPC,并且可以通过PHP代码中的API-RPC调用创建数据库:
您只需告诉客户他的网站空间(订阅)ID(如果需要数据库服务器ID):
<?php
require_once('PleskApiClient.php'); // You can download it by link below
$host = '127.0.0.1'; // It's your Plesk server IP
$login = 'client_login'; // it's your client login name
$password = 's$cr3t'; // Client's password
$client = new PleskApiClient($host); // Init Plesk client
$client->setCredentials($login, $password);
$webspaceId = 7; // webspace/subscription Id where customer wants to create database
$dbName = 'MyNewDataBase'; // name of new database
$request = <<<EOF
<packet>
<database>
<add-db>
<webspace-id>$webspaceId</webspace-id>
<name>$dbName</name>
<type>mysql</type>
</add-db>
</database>
</packet>
EOF;
$response = $client->request($request); // Send query to Plesk host
echo $response; // show response
// parse new database id from $response to variable $dbId
// assign existed DB user to new database
$requestToAssignDefaultUser = <<<EOF
<packet>
<database>
<set-default-user>
<db-id>$dbId</db-id>
<default-user-id>35</default-user-id>
</set-default-user>
</database>
</packet>
EOF;
$response = $client->request($requestToAssignDefaultUser); // Send query to Plesk host
echo $response; // show response
您可以通过其他API请求或从UI获取订阅/网站空间ID:
您可以在此处找到Plesk API PHP客户端和使用示例:https://github.com/plesk/api-examples/tree/master/php