Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

edmauromorais

Não Consigo Criar um Banco de Dados no Cpanel com PHP.

Recommended Posts

Olá pessoal, boa tarde a todos, venho aqui com mais uma dúvida de iniciante que sou, e essa dúvida está me causando problemas para resolução de uma situação, é a seguinte, tenho um script php para criar um banco de dados quando o usuário preenche determinado formulário e estava fazendo os testes e implementações na minha máquina no localhost e tava funcionando tudo muito bem, criando o banco de dados mysql, inserindo as tabelas que eu precisava e tudo mais, só que passei esse código para minha hospedagem e lá veio o problema, quando fui fazer o determinado cadastro que cria o banco de dados ele deu erro. vejam só o código da criação :

//nova conexao para criação de banco de dados 
$con2 = mysqli_connect('localhost', 'w3netbr_root', 'senha');

if (!$con2) {
    die('Não foi possível se conectar com a base de dados.' . mysqli_error($con2));
    mysqli_rollback($con2);
}

//Aqui o comando que cria o determinado banco de dados
//Esta variável $urlEstab é a que está setado o nome do banco vindo do formulário de cadastro.
$sql = ('CREATE DATABASE '.$urlEstab);

mysqli_query($con2, $sql);

Na minha máquina local ta funcionando legalzinho cria o banco normal, tudo funciona normal, mais no cpanel ele não vai está dando o seguinte erro :

Access denied for user 'w3netbr_root'@'localhost' to database 'w3netbr_novobanco'

Alguém sabe como passar essas permissões de acesso para o cpanel via php, por que pelo que entendi é somente questão de permissões para ele poder criar o banco lá no cpanel, teria que passar as informações para que ele criasse o banco e desse as devidas permissões de acesso, criação e alteração de dados.

 

Se alguém souber como fazer isso, e tiver um exemplo de como criar um banco de dados no cpanel via php e puder me ajudar nessa empreitada fico muito agradecido, Valeu gente pelas respostas que vier a ter !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você cria um banco a cada cadastro?

 

Isso Marcos Xavier, a medida que o usuário se cadastra me é informado através de e-mail e mando para o futuro cliente planos de acesso, daí eu libero o acesso dele ao meu site para que ele faça um cadastro do estabelecimento dele e nesse momento é que é criado o determinado banco de dados para esse cliente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifique via Cpanel se o user 'w3netbr_root' tem permissão para acessar todos os bancos de dados. No meu caso( hospedagem zooming), tem opção de escolher um banco ou todos os bancos, para determinado user.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você vai conseguir criar estes bancos pela Api do Cpanel.

 

https://github.com/CpanelInc/xmlapi-php

include("xmlapi.php.inc");  
$db_host = "myDomainName.com";  
$cpuser = "myCpanelUser";  
$cppass = "myCpanelPwd";  

$xmlapi = new xmlapi($db_host);  
$xmlapi->set_port(2083);  
$xmlapi->password_auth($cpuser,$cppass);  
$xmlapi->set_debug(1);  
//create database  
print $xmlapi->api1_query($cpuser, "Mysql", "adddb", 'myDatabaseName');  
//create user  
print $xmlapi->api1_query($cpuser, "Mysql", "adduser", array('myDBUser','myDBPwd'));  
//add user to database  
$xmlapi->api1_query($cpuser, "Mysql", "adduserdb", array(  
                    'myDatabaseName',  
                    'myDBUser',  
                    'all')); 

Agora um banco para cada cliente é tenso. :upset:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você vai conseguir criar estes bancos pela Api do Cpanel.

 

https://github.com/CpanelInc/xmlapi-php

include("xmlapi.php.inc");  
$db_host = "myDomainName.com";  
$cpuser = "myCpanelUser";  
$cppass = "myCpanelPwd";  

$xmlapi = new xmlapi($db_host);  
$xmlapi->set_port(2083);  
$xmlapi->password_auth($cpuser,$cppass);  
$xmlapi->set_debug(1);  
//create database  
print $xmlapi->api1_query($cpuser, "Mysql", "adddb", 'myDatabaseName');  
//create user  
print $xmlapi->api1_query($cpuser, "Mysql", "adduser", array('myDBUser','myDBPwd'));  
//add user to database  
$xmlapi->api1_query($cpuser, "Mysql", "adduserdb", array(  
                    'myDatabaseName',  
                    'myDBUser',  
                    'all')); 

Agora um banco para cada cliente é tenso. :upset:

 

Muito obrigado pelas respostas, e Williams Duarte, sou iniciante e achei que dessa forma seria melhor, criar um banco para cada usuário, por que o determinado usuário vai se cadastrar no meu site depois que ele fizer isso eu é que vou liberar esse determinado usuário para que ele vá para uma rotina para cadastrar o seu estabelecimento e daí sim vim a criar o banco de dados para ele, no inicio pensei em deixar um banco só para todos os usuários e ir controlando os dados pelo ID do determinado usuário, mais depois pensei se por acaso acontecer algum problema no banco de dados, claro que terei que ter backups, mais mesmo assim achei melhor optar por um banco separado para cada cliente para que se acontecer alguma coisa com um os outros estarão funcionando por isso optei por essa de criar um banco para cada usuário, será que pensei de uma forma muito amadora ?

Mais vou tentar usar essa forma que vc me mostrou e assim que conseguir fazer posto aqui a resposta :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vejamos

 

1 banco x 1 problema = 1 problema

 

500 bancos x 1 problema = 503 problemas "café+analgésico+tempo"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade todos estão falando em x bancos de dados, mas existe algo muito maior a observar aqui, que é a empresa de host.

 

No momento em que chegar em torno dos 50 bancos (ou muito menos), a empresa vai lhe convidar a se retirar por fazer mau uso dos recursos.

 

Para você ter uma ideia, é possível um site possuir vários servidores, milhões de usuários e usar apenas um banco de dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Williams Duart veja só um caso que está acontecendo não estou conseguindo criar o banco pelo exemplo que vc me mostrou utilizando a api baixei tudo lá e coloquei o seguinte código para usar

include ('xmlapi.php');

$db_host = "w3designer.net.br";  
$cpuser = "w3netbr"; //Usuário que acesso o cpanel
$cppass = "senha"; // senha para o login no cpanel

$xmlapi = new xmlapi($db_host);
$xmlapi->set_port(2083);
$xmlapi->password_auth($cpuser,$cppass);  
$xmlapi->set_debug(1);  
//create database
//Aqui na variável $urlEstab é onde é setado o nome do banco que vem do formulário  
print $xmlapi->api1_query($cpuser, "Mysql", "adddb", '$urlEstab');  
//create user 
//Aqui coloquei o usuário que tenho lá no cpanel na parte do mysql que quando crio o banco por lá
//o usuário é esse w3netbr_root diferente do que coloquei no inicio para o login
print $xmlapi->api1_query($cpuser, "Mysql", "adduser", array('w3netbr_root','senha));

//add user to database  
$xmlapi->api1_query($cpuser, "Mysql", "adduserdb", array(  
                    '$urlEstab',  
                    'w3netbr_root',
                    'all'));
			

Mais ta lá para dá o print quando ele executar o $xmlapi, mais ele nem cria nem dá print nenhum desse o que é que está errado que não estou enxergando esse erro, alguém poderia me ajudar mais uma vez ?

Agradecido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá galera desculpa pela demora para responder mais deu certo a criação é o seguinte é só usar esse código que ele criará normalmente o seu banco de dados, fica a dica para quem quiser usar é só baixar a api do cpanel no seguinte link :

 

https://github.com/C...lInc/xmlapi-php

 

e usar o código :

//nova conexao para criação de banco de dados, trocando por seu usuario e sua senha no campos Usuario e senha_banco
$con2 = mysqli_connect('localhost', 'Usuario', 'senha_banco');
			
if (!$con2) {
    die('Não foi possível se conectar com a base de dados.' . mysqli_error($con2));
    mysqli_rollback($con2);
}

//Include de Api Cpanel para criação do banco de dados
include ('xmlapi.php');

$db_host = "seudominio.com.br"; //seu dominio
$cpuser = "user"; //Usuario que vc usar acesso ao cpanel
$cppass = "senha"; //Senha que vc usa para acessar o cpanel

$xmlapi = new xmlapi($db_host);
$xmlapi->set_port(2083);
$xmlapi->password_auth($cpuser,$cppass);  
$xmlapi->set_debug(1);  

//create database  aqui onde tem banco_'NomeBanco vc vai colocar como é criado o seu banco no cpanel geralmente tem um nome no inico ex. banco_teste, vc vai colocar o que tiver no seu cpanel, e a variavel $nome é o nome que virá do php.
print ( $xmlapi->api1_query($cpuser, 'Mysql', 'adddb', array('banco_'.$nome)) );

//Aqui onde tem user_root vai ser o nome do seu usuario de acesso ao seu banco mysql no cpanel
$xmlapi->api1_query($cpuser, "Mysql", "adduserdb", array(  
			                    'banco_'.$nome,  
			                    'user_root',
			                    'all'));

É isso aí fica a dica para quem chegar aqui e tiver essa mesma dúvida que tive, já pode usar e criar os seus bancos de dados caso seja necessário, valeu pela ajuda de todos muito obrigado !

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.