MySQL-Server-Portnummer

71

Ich habe gerade eine Datenbank auf MySQL auf meinem Server erstellt. Ich möchte über meine Website mit PHP eine Verbindung dazu herstellen. Dies ist der Inhalt meiner Verbindungsdatei:

$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = 'password';

$conn = mysql_connect($dbhost, $dbuser, $dbpass)
    or die('Error connecting to mysql');

$dbname = 'epub';
mysql_select_db($dbname);

Ich kenne den Benutzernamen / die Passwörter und die IP-Adresse des Servers. Ich frage mich nur, woher ich weiß, welchen Port ich verwenden soll.

109221793
quelle
1
Was für ein Maschinentyp ist das? Wenn das Linux prüft, ob mysqld ausgeführt wird, geben Sie entweder "service mysqld status" oder "/etc/init.d/mysqld status" als root an.
Chris
@ Chris, es läuft auf einem Windows-Server, 2008.
109221793

Antworten:

84

Wenn Ihr MySQL-Server mit Standardeinstellungen ausgeführt wird, müssen Sie dies nicht angeben.

Der Standard-MySQL-Port ist 3306.

[aktualisiert, um die Verwendung von mysql_error () anzuzeigen]

$conn = mysql_connect($dbhost, $dbuser, $dbpass)
    or die('Error connecting to mysql: '.mysql_error());
Mchl
quelle
Ich habe beide IP-Adressen selbst ausprobiert und mit: 3306 am Ende funktioniert keine. Gibt es eine Möglichkeit, herauszufinden, ob es einen anderen Port gibt? Ich habe diesen Server nicht eingerichtet.
109221793
Passst du solltest überprüfen, was der Fehler ist, den du von mysql_connect () bekommst. Verwenden Sie dazu die Funktion mysql_error (). Wenn wir wissen, was der Fehler ist, können wir herausfinden, was los ist und was das eigentliche Problem ist.
Mchl
Der Fehler ist: Keine Verbindung zum MySQL-Server unter 'xxx.xx.xx.xx' (10060)
109221793
Keine Ursache. Ich habe in den Firewall-Einstellungen eine Regel für die Portnummer hinzugefügt. Ich dachte, das wäre schon vorher gemacht worden.
Trotzdem
56

Wenn Sie unter Windows die Portnummer Ihres lokalen Hosts wissen möchten, auf dem MySQL ausgeführt wird, können Sie diese Abfrage auf dem MySQL-Befehlszeilenclient verwenden.

SHOW VARIABLES WHERE Variable_name = 'port';


mysql> SHOW VARIABLES WHERE Variable_name = 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port          | 3306  |
+---------------+-------+
1 row in set (0.00 sec)

Sie erhalten die Portnummer, auf der MySQL ausgeführt wird.

Nikhil Agrawal
quelle
1
Funktioniert auch unter Linux.
Heitor
15

Schau dir das an, Alter

<?php
// we connect to example.com and port 3307
$link = mysql_connect('example.com:3307', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);

// we connect to localhost at port 3307
$link = mysql_connect('127.0.0.1:3307', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);
?>
Adi Sembiring
quelle
9

Wenn Sie Ihren Port als Variable haben möchten, können Sie PHP wie folgt schreiben:

$username = user;
$password = pw;
$host = 127.0.0.1;
$database = dbname;
$port = 3308; 

$conn = mysql_connect($host.':'.$port, $username, $password);
$db=mysql_select_db($database,$conn);
Zhihong
quelle
2

Wenn Sie 'localhost' angeben, verwenden die Client-Bibliotheken standardmäßig den Dateisystem-System-Socket auf einem Unix-System. Probieren Sie den Wert mysql_default_socket aus php.ini (falls festgelegt) und dann den Wert my.cnf aus.

Wenn Sie eine Verbindung mit einem anderen Tool herstellen, geben Sie den Befehl "Variablen wie '% socket%' anzeigen" ein.

Wenn Sie einen Netzwerkport verwenden möchten (der etwas langsamer ist), geben Sie 127.0.0.1 oder eine physische Schnittstelle an, die dem Computer zugeordnet ist.

symcbean
quelle
2

Der Standardport von MySQL ist 3306

Der Standardtopf des SQL-Servers ist 1433

Ravi Kumar
quelle
2

Dies ist eine reine PDO-Visualisierung, da die mysql_*Bibliothek veraltet ist.

<?php
    // Begin Vault (this is in a vault, not actually hard-coded)
    $host="hostname";
    $username="GuySmiley";
    $password="thePassword";
    $dbname="dbname";
    $port="3306";
    // End Vault

    try {
        $dbh = new PDO("mysql:host=$host;port=$port;dbname=$dbname;charset=utf8", $username, $password);
        $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        echo "I am connected.<br/>";

        // ... continue with your code

        // PDO closes connection at end of script
    } catch (PDOException $e) {
        echo 'PDO Exception: ' . $e->getMessage();
        exit();
    }
?>

Beachten Sie, dass es bei dieser OP-Frage anscheinend nicht um Portnummern ging. Wenn Sie den Standardport von 3306always verwenden, sollten Sie ihn aus dem Uri entfernen, dh das port=$port;Teil entfernen .

Wenn Sie häufig die Ports ändern, sollten Sie die obige Portverwendung berücksichtigen, um die Wartbarkeit zu verbessern, wenn Änderungen an der $portVariablen vorgenommen werden.

Einige wahrscheinliche Fehler, die von oben zurückgegeben wurden:

PDO Exception: SQLSTATE[HY000] [2002] No connection could be made because the target machine actively refused it.
PDO Exception: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: No such host is known.

Im folgenden Fehler kommen wir uns nach dem Ändern unserer Verbindungsinformationen zumindest näher :

PDO Exception: SQLSTATE[HY000] [1045] Access denied for user 'GuySmiley'@'localhost' (using password: YES)

Nach weiteren Änderungen sind wir jetzt wirklich nah dran, aber nicht ganz:

PDO Exception: SQLSTATE[HY000] [1049] Unknown database 'mustard'

Aus dem Handbuch zu PDO-Verbindungen :

Drew
quelle
1

Versuchen

$conn = mysql_connect($host, $username, $password, $port);
Sudishrestha
quelle
1

Die Portnummer 3306 wird für MySQL und Tomcat unter Verwendung des 8080-Ports verwendet. Weitere Portnummern stehen zum Ausführen der Server oder der Software zur Verfügung, unabhängig davon, was für unsere sofortige Kompilierung vorgesehen ist. 8080 ist die Standardnummer, sodass nur in der Eclipse-IDE ein Portfehler angezeigt wird. jvm und tomcat bevorzugen immer die 8080.3306 als Standardportnummer für MySQL. Deshalb möchten sie nicht jedes Mal als "localhost: 3306" erwähnt werden.

  <?php  
    $dbhost = 'localhost:3306';
//3306 default port number $dbhost='localhost'; is enough to specify the port number
//when we are utilizing xammp default port number is 8080.
      $dbuser = 'root';
      $dbpass = '';
         $db='users';

             $conn = mysqli_connect($dbhost, $dbuser, $dbpass,$db) or die ("could not connect to mysql");      

              // mysqli_select_db("users") or die ("no database");  

    if(! $conn ) {
        die('Could not connect: ' . mysqli_error($conn));
    }else{
        echo 'Connected successfully';
    }
    ?>
Sivaa Reddy
quelle
Bitte verwenden Sie 127.0.0.1anstelle von localhost, sonst funktioniert der Portwechsel nicht .
Dmitry Verhoturov