Non riesco a connettermi al DB tramite PDO

CristianB72

Nuovo Utente
24 Giu 2016
24
1
3
53
Salve, sto studiando i linguaggi di programmazione per il web, in questo periodo sto studiando un testo di Kevin Yank dal titolo "Sviluppare applicazioni con PHP e MySQL". Ho seguito i primi capitoli senza problemi ma mi son bloccato completamente sul capitolo riguardante la connessione tramite PHP al database MySQL.
Sto lavorando sia su locale tramite EasyPHP che su remoto tramite Altervista. Sono giorni che nei vari forum cerco risposte d'aiuto per il mio problema, in pratica sto cercando di connettermi al DB attraverso l'uso di PDO.
Allego qui sotto il codice:
Codice:
<?php
//CONNESSIONE AL DATABASE E GESTIONE ERRORI
$col = 'mysql:host=localhost;dbname=ijdb';

try{
    $pdo = new PDO($col,'ijdbuser2','adminno');
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $pdo->exec('SET NAMES "utf8"');
   }


catch (PDOException $e)
{
    $output = 'Impossibile connettersi al server di database. '.$e->getMessage();
    include 'output.html.php';
    exit();
}
$output = 'Connessione al database stabilita.';
include 'output.html.php';
?>

A volte mi da l'errore riguardante il mancato caricamento di un plugin ed in remoto mi da "accesso negato per lo user".
Vorrei tanto continuare a studiare il libro ma se mi si blocca il percorso fin dalla prima connessione, rischio di perdere ogni forma d'interesse per il PHP. Ho anche modificato i file di Configurazione, togliendo il commento sulle voci in causa ma continua a non connettermi. Posso dare tante altre informazioni aggiuntive in base a quello che potete rispondere. Grazie a tutti.
 
Ciao, prova a eseguire queste prove
PHP:
$pdo = new PDO("mysql:host=localhost;dbname=database", 'username', 'password');
 
Ciao Cris8380, l'istruzione in quel formato l'avevo scritta così inizialmente (secondo i dettami del libro) ma come vedi è la stessa cosa.
Mi torna questo errore: "SQLSTATE[42000] [1044] Access denied for user "******@'localhost' to database 'ijdb'
Come avevo scritto ieri, cambiando qualche codice che al momento non ricordo, mi dava "plugin *** not loaded! Ma se io scarico EasyPHP non dovrebbe già contenere tutto il necessario? Poi se eventualmente cambio versione di PHP non me la cambia, come mai? Non riesco ad usare la versione 7.
 
l'unica cosa da fare CristianB72 e controllare il php.ini
 
Infatti come pensavo, cerca verificare i privilegi del db,
 
Ho risolto, il problema era un'altro. Secondo il libro, ho creato un utente dandogli i privilegi necessari ed attribuendogli una password. Ora che sto controllando le caratteristiche del DB, leggo che non sto usando l'utente che ho creato ma l'utente "root". Utilizzando "root", accedo tranquillamente al DB.
Invece se tento di accedere con l'utente "ijdbuser" mi da questo errore: "SQLSTATE[HY000] [1524] Plugin '*925BD838D0718CEAEE1EF0BB3370E84EA2160A69' is not loaded"
Scusate se sto facendo confusione ma ci stiamo arrivando. In allegato ho messo lo screenshot degli utenti.
 

Allegati

  • CatturaDB.JPG
    CatturaDB.JPG
    47,9 KB · Visite: 515
Prova ad eliminare l'utente e reinserirlo nuovamente!
 
Lo avevo già fatto creando appunto l'utente ijdbuser2. Gli avevo anche creato la password ma nella colonna "password" c'è scritto NO. Non capisco
 
Visto che si tratta di errore del plugin, quindi i nuovi utenti non li riconosce, per poter risolvere il problema (lo spero per te) prova a eseguire un upgrade di MySQL
Buon lavoro a pesto.
 
Ma il file easyPHP non dovrebbe contenere già tutti gli ultimi aggiornamenti? Io ho pure scaricato l'ultima versione di MySQL ma poi come si installa?
 
nella lista che hai postato c'è la colonna "GRANT", dove si capisce che i nuovi utenti non hanno "permessi" per il db
nel libro che stai leggendo, dovrebbe essere trattata l'istruzione "GRANT" che permette di assegnare i permessi agli utenti,
nel caso fosse necessario, puoi trovare anche qui http://dev.mysql.com/doc/refman/5.7/en/grant.html

ricorda,
ti connetti a mysql con utente e password,
chiedi poi di utilizzare uno specifico db
ed, in precedenza, con la "grant" hai concesso all'utente il "privilegio" delle operazioni che può compiere sul db
l'utente potrà "eseguire" solo le istruzione del db che gli sono state concesse
 

Discussioni simili