Linux serverınızdaki php 4.1.X versiyonunu yenisiyle değiştirmek istiyorsunuz ve de 4.2.0'ı kurmak icin download ettiniz. unzip, configure, make, make install'dan sonra bütün mySQL database bağlantılarınızın çalışmadığını ve access problemleriniz olduğunuzu gördünüz. Aman tanrım! neler oluyor??!! diyorsanız işte cevabı:
php 4.2.0`da mySQL library`si yenilendi. Ve görülen o ki yeni versiyona sorunlu başlanmış. Eskiden authentication için sadece "localhost"u kabul eden php yeni versiyonunda "localhost.localdomain" şeklinde bir authentication mekanizmasi kullanıyor. Yani yapmanız gereken mysql.user ve mysql.db tablolarındaki bütün localhost satırlarını localhost.localdomain şekline dönüştürmek. Eger /etc/hosts dosyanızda 127.0.0.1 karşılık gelen yere bir host ismi koymuşsanız (örneğin: 127.0.0.1 hostismim localhost localhost.localdomain) o zaman yine o tablolarda localhost yazan yerleri bu host ismine duzeltmeniz gerekiyor.
Peki ben butun islemlerimi phpMyAdmin üstünden yapıyordum, şimdi o da çalışmıyor! diyorsaniz o zaman da console'dan mysql istemcisini çalıştırmanız gerekiyor.
[root@mail paris]# mysql -u root -p
Enter password:
...
mysql> use mysql
...
mysql> UPDATE user SET host="localhost.localdomain" WHERE host="localhost";
...
mysql>UPDATE db SET host="localhost.localdomain" WHERE host="localhost;
...
mysql> FLUSH PRIVILEGES;
...
AMAN DİKKAT! bu satırlar bütün localhost olan kullanıcıları etkiler,
dolayısıyla root kullanıcısını da! Bu yüzden belki root kullanıcısında localhost bırakmak daha iyi olur. yoksa console erişimizini kaybedersiniz! ;)
Umarım saçlarınızı ve değerli birkaç zamanınızı biraz olsun kurtarabilmiştir bu minik döküman ;)