1. Joost Vermeend Member

    MySQL database via PHP

    Topic geplaatst op: 21-04-2015 om 17:34

    Ik probeer via onderstaand scriptje een database aan te maken via php, ik krijg alleen de hele tijd een acces denied error. Iemand een idee hoe dit komt? Blokkeert Versio dit?

    Error die ik krijg: Connected successfully Could not create database: Access denied for user


    En script:

    <?php
    $dbhost = 'localhost';
    $dbuser = 'mijnusername';
    $dbpass = 'mijnpass';
    $conn = mysql_connect($dbhost, $dbuser, $dbpass);
    if(! $conn )
    {
    die('Could not connect: ' . mysql_error());
    }
    echo 'Connected successfully';
    $sql = 'CREATE Database mijnusername_dbss';
    $retval = mysql_query( $sql, $conn );
    if(! $retval )
    {
    die('Could not create database: ' . mysql_error());
    }
    echo "Database test_db created successfully\\n";
    mysql_close($conn);

    ?>

  2. Rick Wolthuis Member
    Reactie geplaatst op: 21-04-2015 om 22:18

    De foutmelding die je kijgt:
    Connected successfully Could not create database: Access denied for user


    Even in stukjes:
    1) Connected successfully - Mooi, we weten dat de verbinding naar de server is gelukt.
    2) Could not create database - De MySQL server weigert een database aan te maken op de manier waarop jij dat wilt.
    3) Access denied for user - De gebruiker heeft geen rechten.

    Je probeert een database aan te maken terwijl je ingelogd bent onder een gebruiker die daar niet de rechten voor heeft.

    Ik weet niet precies hoe Versio hier mee om gaat, en het zou best kunnen dat je gewoon niet een nieuwe gebruiker mag aanmaken op hun MySQL server (of dat DirectAdmin dit blockt). Maar als dit allemaal niet het geval is;
    1) Log in met de gebruiker die de hoogste rechten heeft.
    2) Ga naar het kopje "Gebruikers" (of accounts).
    3) Klik op de gebruiker waar het om gaat.
    4) Zorg ervoor dat de gebruiker "CREATE" rechten heeft.

    Indien dit allemaal niet werkt, zou ik als ik jou was even het gevaarlijke wereldwijde web op gaan om veder te zoeken.

    Ik hoop dat je er wat aan hebt!

    Vond u dit antwoord nuttig?

  3. Joost Vermeend Member
    Reactie geplaatst op: 22-04-2015 om 00:08

    Ha Rick,

    Dank voor de reactie.

    Als ik inlog als gebruiker met de hoogste rechten dan is er helaas geen optie gebruikers of accounts, waarschijnlijk omdat ik op shared hosting zit.

    Het gekke is dat als ik de nieuwe database de prefix test_ geef hij het wel doet, ik weet alleen niet of dit wel de bedoeling / veilig is.

    Vond u dit antwoord nuttig?

  4. BlueSun Member
    Reactie geplaatst op: 23-04-2015 om 16:16

    Zowel het aanmaken van een nieuwe database, als het aanmaken van nieuwe gebruikers moet je volgens mij in Direct Admin doen.

    Als je dit via je eigen script, of PHPMyAdmin wilt doen, loop je inderdaad tegen rechten problemen op.

    Vond u dit antwoord nuttig?

  5. Joost Vermeend Member
    Reactie geplaatst op: 23-04-2015 om 16:46

    Kan ik bij zo'n VPS die rechten aanpassen zodat het wel kan?
    Dan ga ik me daar maar is in verdiepen.

    Vond u dit antwoord nuttig?

  6. Alex Boon Versio medewerker
    Reactie geplaatst op: 23-04-2015 om 17:19

    Dat is niet mogelijk bij gebruik van directadmin daar kan de database enkel via directadmin aangemaakt worden. Je zou eventueel iets kunnen programmeren hiervoor met de directadmin API

    Vond u dit antwoord nuttig?

  7. Joost Vermeend Member
    Reactie geplaatst op: 24-04-2015 om 11:53

    Bedankt Alex voor de tip, jij bent mijn held!

    Voor mensen die ook via php script database wil aanmaken in plaats van via directadmin.

    //als eerst includen wij de socket zodat we die kunnen gebruiken
    include("httpsocket.php");
    (Hier op GitHub te halen: https://github.com/arian/DirectAdminApi/blob/master/Source/HTTPSocket.php)

    //nou de socket is geinclude kunnen we hem starten
    $sock = new HTTPSocket;

    //nu gaan we inloggen in Direct Admin (verander wel de gegevens)
    $sock->connect('localhost',2222);
    $sock->set_login('Je Versio Username,'Je Versio wachtwoord');

    $sock->set_method('POST');

    $sock->query('/CMD_API_DATABASES',
    array(

    'action' => 'create',
    'name' => 'Je nieuwe database naam',
    'userlist' => 'Je Database user (bij dit script al wel vooraf aangemaakt in direct admin)',
    'passwd' => 'Je Database user wachtwoord',
    'passwd' => 'Je Database user wachtwoord'

    ));

    $result = $sock->fetch_body();
    echo $result;

    Vond u dit antwoord nuttig?

  8. Alex Boon Versio medewerker
    Reactie geplaatst op: 24-04-2015 om 14:10

    Graag gedaan en nog een fijne dag verder!

    Vond u dit antwoord nuttig?