PHP MySQL bağlantısı başarısız oldu

6 Cevap php

Aşağıdaki kod ile güvenli MySQL benim PHP kodu bağlanmaya çalışıyorum:

<html>
    <?php
        $con = mysql_connect("localhost:3306","root","password");
        if(!$con)
        {
            die('Could not connect: ' . mysql_error());
        }
        else
        {
            echo "Connection established!";
        }
        mysql_close($con);
    ?>
</html>

Ama ben aşağıdaki hata iletisini almaya devam:

Warning: mysql_connect() [function.mysql-connect]: Can't connect to MySQL server on 'localhost' (10061) in C:\xampp\htdocs\database_connect.php on line 5 Could not connect: Can't connect to MySQL server on 'localhost' (10061)

İşte ben aldı sorun giderme adımları şunlardır:

  • Mysqld Windows Görev Yöneticisi Süreçleri çalışır durumda olup olmadığını kontrol - o
  • MySQL Windows komut istemine yazarak host üzerinde çalışan olup olmadığını kontrol: "telnet 192.0.0.1 3306" ve mesajı aldım "port 3306 üzerinde ana bağlantı açılamadı, Could: bağlantı başarısız oldu"
  • Windows Güvenlik Duvarı MySQL engelleme olup olmadığını kontrol - MySQL bir istisnadır.

Nasıl bu kod işe güvenle alabilirim? Ve nasıl adınız gibi benim MySQL hakkında temel yararlı bilgiler kontrol edebilirim?

6 Cevap

Sen MySQL server tcpview kullanarak port 3306 bağlı olduğunu kontrol edebilirsiniz. Daha basit, ev sahibi belirtici gelen noktasını bırakın. Sürücü daha sonra yerine bir TCP soket daha, bir adlandırılmış yöneltme kullanmaya çalışmalıdır.

Alakasız bir not, ben şiddetle PDO MySQL sürücüsü geçmek için çağırıyorum. Kullanmakta olduğunuz bir korkunç güncel değil. Bir büyük avantajı, güvenlik ve verimlilik avantajları sunan PDO destekleri prepared statements, olduğunu.

Edit:

Bu ana soruya cevap vermez, ama bir açıklama bu bilgileri gönderirken bir karmaşa olacak.

Aksine W3Schools'da daha, önerilen kaynaklara bakabilirsiniz:

Note: Bu OP'ın sorununa çözüm değil, ancak bazı diğer millet için sorun olabilir çünkü ben de tarihsel nedenlerle, benim cevap tutmak ve edecektir.

Windows Vista / 7 ve PHP 5.3.1 çalışıyor musunuz?

Şu anda bağlarken sorunlara neden oluyor (şimdi mysqlnd kullanarak) PHP MySQL kütüphanede son değişiklik localhost. Bir böcek dolu ama o zamana kadar, emin sizin hosts dosya localhost için bir girdi içerdiğini yapmak olmuştur.

Sizin hosts dosya localhost girişleri gibi gibi bakmak gerekir:

127.0.0.1  localhost
#::1       localhost

Gördüğünüz gibi, IPv6 giriş dışarı yorumladı ve IPv4 girdisi değildir.

hosts dosya bulunur:

%WINDIR%\System32\drivers\etc\hosts

Source

Tamam herkes buraya Outis tarafından önerilen PDO kullanarak MySQL ve PHP bağlayan benim ilk girişimleridir. İşe yaradı.

<?php 
$user = root;
$pass = password;
try
{
    $dbh = new PDO('mysql:host = localhost; dbname=databaseName', $user,$pass);
    if($dbh)
    {
        print "Connected successfully";
    }
}
catch (PDOException $e)
{
    print "Error: " . $e->getMessage(). "<br/>";
    die();
}
?>

İşte benim ikinci girişimi - Ben bir sorgu yapmaya çalışıyorum bu sefer

<?php 
$user = root;
$pass = password;
try
{
    $dbh = new PDO('mysql:host = localhost; dbname=databaseName', $user,$pass);
    foreach($dbh->query('SELECT * FROM tableName') as $row)
{
    print_r($row);
}
$dbh = null; 
}
catch (PDOException $e)
{
    print "Error: " . $e->getMessage(). "<br/>";
    die();
}
?>

Bu kodu çalıştırdıktan sonra, ben şu sonuçları elde:

Array ([exo_flowers_ID] => 1 [0] => 1 [name] => Dendroseris Neriifolia [1] => Dendroseris Neriifolia [ülke] => Şili [2] => Şili [env_workers_id] => 1 [3] = > 1) Array ([exo_flowers_ID] => 2 [0] => 2 [name] => Snowdonia Hawkweed [1] => Snowdonia Hawkweed [ülke] => Kuzey Galler [2] => Kuzey Galler [env_workers_id] => 1 [3] => 1)

Bütün istediğim bir satır veya sütunun içeriğini görüntülemek için oldu, ama bunun yerine içeriği artı tüm bu destekleri hepsi var. Nasıl bir tablonun satır veya sütunun yalnızca içeriğini görüntülemek musunuz?

Ve nihayet, nasıl yapmak bu yüzden gibi bir sorgu: SEÇİN * tableName WHERE 'columnName1' = 'somename' VE 'columnName2' = 'someothername'; ?

Sen şifre kurtarmak değil, ancak yeni bir tane oluşturabilirsiniz. MySQL hizmetini kapatın ve yürütmek:

cd c:\mypathtomysql\bin
mysqladmin -u root password NEWPASSWORD

Belki yüklemek MySQL ayarlanmış uzak bağlantıları yok. Eğer bir uzak bağlantı olarak aynı olan bir bağlantı, üzerinden bağlanmaya çalışıyorsunuz. Ben MySQL yaptık çünkü bir süre oldu, ama bu bir ölü bir hediye olduğunu bulunuyor:

Checked whether MySQL was running on the host by typing in Windows command prompt: "telnet 192.0.0.1 3306" and got the message "Could not open connection to the host, on port 3306: connection failed"

Bu işe gitmiyor. Eğer port 3306 ve başka bir bağlantı noktası için yapılandırılmış emin misin? Çift kontrol edin.

Kod kendisi iyi görünüyor ve sorun değildir. Liman açıkça konudur.

Eğer MySQL kabuk erişebilir, bu gibi sunucunun ağ yapılandırmasını kontrol edebilirsiniz:

mysql> show variable like 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port          | 3306  | 
+---------------+-------+
mysql> show variables like 'skip_networking';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| skip_networking | OFF   | 
+-----------------+-------+
1 row in set (0.00 sec)

'Skip_networking' ON 'olarak ayarlı ise, MySQL sunucu ağ üzerinden erişime izin vermeyin ve yerel soketleriyle sadece çalışacaktır yapılandırıldı. Aksi takdirde 'liman' yapılandırma değişkeni belirtilen bağlantı noktasında dinleme olacak.