不能从代码中创建数据库,但可以从cpanel


Can't create database from coding but can from cpanel

数据库test_new_1可以直接从cpanel创建用户testcom,但不能通过php创建。另一个服务器工作正常,唯一的区别是用户名和数据库前缀在该服务器上是相同的。

错误显示:

Error creating database: Access denied for user 'testcom'@'localhost' to database 'test_new_1' 
PHP

// Create connection
$conn = mysqli_connect('localhost', 'testcom', '123456');
// Check connection
if (!$conn)
{
die("Connection failed: " . mysqli_connect_error());
}
// Create database
$sql = "CREATE DATABASE IF NOT EXISTS test_new_1";
if (mysqli_query($conn, $sql))
{
echo "Database created successfully";
}
else
{
echo "Error creating database: " . mysqli_error($conn);
}

cPanel不允许你直接从MySQL函数创建数据库。你需要使用cPanel提供给你的API:

从https://github.com/CpanelInc/xmlapi-php/blob/master/xmlapi.php下载xmlapi.php然后使用:

<?php
    include("xmlapi.php");
    $db_host = 'yourdomain.com'; 
    $cpaneluser = 'your cpanel username';
    $cpanelpass = 'your cpanel password'; 
    $databasename = 'testdb';
    $databaseuser = 'test'; // Warning: in most of cases this can't be longer than 8 characters
    $databasepass = 'dbpass'; // Warning: be sure the password is strong enough, else the CPanel will reject it
    $xmlapi = new xmlapi($db_host);    
    $xmlapi->password_auth("".$cpaneluser."","".$cpanelpass."");    
    $xmlapi->set_port(2082);
    $xmlapi->set_debug(1);//output actions in the error log 1 for true and 0 false  
    $xmlapi->set_output('array');//set this for browser output  
    //create database    
    $createdb = $xmlapi->api1_query($cpaneluser, "Mysql", "adddb", array($databasename));   
    //create user 
    $usr = $xmlapi->api1_query($cpaneluser, "Mysql", "adduser", array($databaseuser, $databasepass));   
     //add user 
    $addusr = $xmlapi->api1_query($cpaneluser, "Mysql", "adduserdb", array("".$cpaneluser."_".$databasename."", "".$cpaneluser."_".$databaseuser."", 'all'));
?>