Hi, Ik ben geen backend developer maar ik ben me er in aan het verdiepen omdat het zoveel meer mogelijkheden geeft.

Ik heb een database aan gemaakt met de naam: "testdb"
en ik heb een gebruiker toegevoegd met de naam: "test"

De gebruiker 'test' heeft alle rechten van de database 'testdb'

Ik probeer nu verbinding te krijgen met de database 'testdb' met de volgende code:

$servername = "localhost";
$username = "test";
$dbname = "testdb";
$password = "";


$conn = new mysqli($servername, $username, $password, $dbname);


if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";

Met deze code krijg ik de melding:
Connection failed: Access denied for user ''@'localhost' to database 'testdb'

Als ik de $dbname verander in 'root' en de $username in 'MySQL' zoals hieronder:

$servername = "localhost";
$username = "root";
$dbname = "MySQL";
$password = "";


$conn = new mysqli($servername, $username, $password, $dbname);


if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";

Dan krijg ik wel de melding 'Connected successfully'

Waarom lukt het bij de database 'MySQL' wel en niet bij de 'testdb' database?

Nog wat gegevens voor als het nodig is.
Ik gebruik:
- wampserver: Versie 3.2.0 - 32bit
- Apache Versie: 2.4.41
- phpmyadmin Versie: 4.9.2
- MySQL Versie: 5.7.28
Dit staat in mijn hosts bestand:

127.0.0.1 localhost
::1 localhost

Dit bestand staat bij mij trouwens in de map: Windows/System32/drivers/etc/hosts :p

En dit is het resultaat van de eerste query:

MySQL/mysql/user/		http://localhost/phpmyadmin/server_privileges.php?flush_privileges=1&server=2
 Weergave van records 0 -  3 (4 totaal, Query duurde 0,0004 seconden.)

SELECT Host, User FROM mysql.user


Host	        User	
localhost	mysql.session	
localhost	mysql.sys	
localhost	root	
localhost	test	


En dit is het resultaat van de tweede query:

MySQL/		http://localhost/phpmyadmin/index.php?server=2
 Weergave van records 0 -  2 (3 totaal, Query duurde 0,0004 seconden.)

SELECT Host, Db, User FROM mysql.db


Host	        Db	                User	
localhost	performance_schema	mysql.session	
localhost	sys	                mysql.sys	
localhost	testdb	                test


(deze resultaten worden bij mij trouwens niet weergegeven in de console. Zou dat niet zo moeten zijn? Ik heb ze nu gekopieerd met de optie "Kopieer naar klembord")

Ik sla altijd mijn bewerkingen altijd gelijk op en ververs altijd de webpagina met ctrl f5. Dat zijn handelingen die ingebakken zijn en ik uit automatisme doe.
Zijn er mogelijk meerdere MySQL-varianten actief (bijvoorbeeld MySQL, MariaDB), die op verschillende poorten werken ofzo?

Wat als je gewoon eens in een DOS-prompt het volgend intypt?
mysql -u test -p

Druk nogmaals op enter als je wachtwoord leeg is, en als je de database in komt:
USE testdb

Dat zou moeten werken als alles goed ingesteld staat?

(deze resultaten worden bij mij trouwens niet weergegeven in de console. Zou dat niet zo moeten zijn? Ik heb ze nu gekopieerd met de optie "Kopieer naar klembord")

Hmm. Wordt phpMyAdmin standaard meegeleverd met WAMP tegenwoordig? Anders zou je een in de configuratie kunnen kijken hoe die een verbinding maakt met de database (en welke). Wordt daar bijvoorbeeld een niet-standaard poort gebruikt (default is 3306). Maar dit is mogelijk interessant om verder te onderzoeken omdat ook dit niet direct het gewenste resultaat geeft.
Ik heb het volgende gedaan in opdrachtprompt:

C:\Users\xxx>cd "C:\wamp\bin\mysql\mysql5.7.28\bin"

C:\wamp\bin\mysql\mysql5.7.28\bin>mysql -u test -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 74
Server version: 5.7.28 MySQL Community Server (GPL)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> USE testdb
Database changed
mysql>

Hieronder heb ik weer aangegeven wat wel en wat niet werkt. Ik laat nu alleen de inlogegevens zien:

$servername = "localhost";
$username = "root";
$dbname = "MySQL"; 
// dit werkt wel
$password = "";


$servername = "localhost";
$username = "root";
$dbname = "testdb";
$password = "";
Dit werkt niet en krijg ik deze melding:
(HY000/1049): Unknown database 'testdb' 


$servername = "localhost";
$username = "test";
$dbname = "testdb";
$password = "";
Dit werkt ook niet en krijg ik de volgende melding:
(HY000/1045): Access denied for user 'test'@'localhost' (using password: NO)
Het valt mij op dat user 'test' nu wel wordt gelezen.



Hmm. Wordt phpMyAdmin standaard meegeleverd met WAMP tegenwoordig?

Dat is volgens mij altijd al zo geweest. Wamp, Apache, phpmyadmin en mysql zitten altijd in één pakket.
De poort die wordt gebruikt is 3308
Ik had de database Mariadb tijdelijk uitgeschakelt en dat had ik beter niet kunnen doen want nu krijg ik de melding dat ie geen verbing kan maken met de doel computer.

Momenteel gebruikt MySQL gebruik van poort 3308 en ik lees op internet dat 3306 de standaard poort is.
Ik heb deze getest en krijg het volgende resultaat:

***** Test which uses port 3306 *****

===== Tested by command netstat filtered on port 3306 =====

Port 3306 is not found associated with TCP protocol
Port 3306 is not found associated with TCP protocol

Pffff... het is allemaal wel erg complex hoor
Niet echt, de default instellingen van WAMP en dat soort pakketten zijn vaak compleet ruk.

Mja, probeer dan voor de gein eens te connecten via poort 3308? Want mogelijk praat je dus met de verkeerde database-server. Daarom was mijn vraag ook: met welke database-server praat phpMyAdmin, inspecteer dus de configuratie van phpMyAdmin en kijk welke poort daar staan ingesteld? Indien je communiceert via een niet-standaard poort dan zul je deze dus expliciet in moeten stellen.

Of probeer het volgende:
<?php
$db = new mysqli('localhost', 'test', '', 'testdb', '3308');
if ($db->connect_error === NULL) {
    echo 'connectie gelukt :)';
} else {
    echo 'connectie mislukt :(';
}
?>[end]

Die [end] is om te zien of je het einde van het script uberhaupt bereikt, als de pagina blank blijft voeg dan error_reporting et cetera toe.
Tijd voor een feestje!
Het werkt :D

ik had dit gevonden in "config.inc.php"

$cfg['Servers'][$i]['port'] = $wampConf['mysqlPortUsed'];

Ik heb verschillende config bestanden gevonden waar de poort wordt aangeroepen. Het lijkt me beter dat ik me daar nu nog niet in ga verdiepen. Ik ga eerst weer verder met de tutorial waar ik mee bezig was.

Hartstikke bedankt voor je tijd en hulp Thomas!

Reageren