Feb 242015
 

MySQL’in eski şifre kaydetme tekniğini bırakmasının üzerinden uzun zaman geçti. Ancak birçok kurumda halen geriye dönük uyumluluk nedeniyle yeni şifre kaydetme tekniği kullanılamıyor. Bu nedenle de bazı MySQL sunucuları halen old_passwords=1 çalıştırılıyor.

Eğer geliştirme yaptığınız bilgisayarınız bir Mac ise aşağıdaki gibi bir hata almanız çok normal:
Warning: mysql_connect(): The server requested authentication method unknown to the client [mysql_old_password] in /Users/yasar/test.php on line 3

Warning: mysql_connect(): The server requested authentication method unknown to the client in /Users/yasar/test.php on line 3

Bunun nedeni OS X ile birlikte gelen PHP’nin eski şifre kaydetme tekniğini desteklemeyen bir MySQL sürücüsünü kullanıyor olması.

Her ne kadar OS X birçok Unix aracıyla birlikte geliyor olsa da eğer benim gibi Linux veya FreeBSD’den geçiş yaptıysanız zaten ya MacPorts ya da Homebrew kurmuşsunuzdur. İstediğimde rahatlıkla yeni sürüm paketleri alabildiğim ve ihtiyacım olan özellikleri ekleyebildiğim için zaten önceden OS X ile gelen PHP sürümü yerine MacPorts paket deposundaki PHP’yi kurmuştum. Tabi MacPorts depolarındaki PHP 5.6 sürümü de aynı OS X ile birlikte gelen PHP 5.5 gibi MySQL’in eski yetkilendirme yöntemini desteklemiyor.

Bu sorunu çözmek için aşağıdaki komutu vermek yeterli:
sudo port install php56-mysql -mysqlnd +mysql55

Bu sayede php56-mysql paketini kurarken mysqlnd sürücüsünü değil eski şifreleme yöntemini destekleyen mysql55 sürücüsünü yükleyebilirsiniz.

Eğer MacPorts ile PHP’yi kurmak istiyorsanız MacPorts’un sitesinden paket yöneticisini indirip kurduktan sonra şu komutu verin:
sudo port search php56

Bu komut, paket depolarında bulunan PHP 5.6 paketlerini listeler. Daha sonra da bunlardan istediklerinizi şöyle kurabilirsiniz:
sudo port install paket1 paket2 paket3 paketN

Örnek:
sudo port install php56 php56-xsl php56-xmlrpc

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)