Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: IIS 6.0 + php +Mysql - problrm z podlaczeniem do bazy
Forum PHP.pl > Forum > Serwery WWW > IIS
acro6
Witam

Jakoś przebrnąłem przez instalację IIS na w2k3 , php i mySql'a. Niby wszystko ok, ale nie mogę się połączyć z bazą przez skrypt php.
Do administrowania bazą używam EMS administartor czy jakos tak i bez problemów udaje mi sie skomunikować z mysql'em. Stworzyłem sobie bazy z tabelami, które są wypełnione oraz użytkowników o odpowiednich prawach, jednak wywołanie :

  1. <?php
  2. $connection = mysql_connect("127.0.0.1", "user", "password") or
  3. die ("Nie można nawiązać połączenia z bazą danych");
  4. ?>

powoduje wywalenie komunikatu "Nie można ..."

Jeśli ktoś miał podobny problem, bo widziałem kilka podobnych wątków jednak bez rozwiązania to poproszę o jakąś radę, ewentualnie gdzie można sprawdzić jaka jest przyczyna braku komunikacji php z myql w momencie próby podłączenia się do bazy danych.

Piszę w tym dziale, bo być może istnieje jakiś problem z prawami w IIS dla użytkowników korzystających z plików php i bazy

pozdrawiam Acro
acro6
Witam

Znalazłem . Niżej opisałem rozwiązanie, może się komuś przyda, bo widziałem na różnych forach podobne problemy.

Mianowicie parser PHP4 nie jest w stanie połączyć się z bazą MySQL 4.1, gdy ta druga zainstalowana jest z domyślnymi opcjami i konto użytkownika bazy danych jest zabezpieczone hasłem.

Konta użytkowników serwera bazy danych MySQL są zapisywane w bazie o nazwie "mysql", w tabeli "user".
W MySQL od wersji 4.1 zaimplementowano obsługę 41-bajtowych hashy. PHP4 obsługuje jedynie 16-bajtowe hashe.

Struktura 16-bajtowych hashy wygląda następująco: 6f8c114b58f2ce9e,
podczas gdy struktura 41-bajtowych wygląda tak: *43c8aa34cdc98eddd3de1fe9a9c2c2a9f92bb2098d75.

41-bajtowe hashe są dłuższe i zawsze zaczynają się znakiem "*", co nie miało miejsca w ich 16-bajtowej odmianie.

Można jednak spowodować aby baza MySQL 4.1 używała 16-bajtowych hashy, dzięki czemu parser PHP4 obsłużyłby autoryzowane połączenie z tą bazą danych. W tym celu należy uruchamiać serwer bazy danych z parametrem "--old-passwords".

Jednak parametrem "--old-passwords" mozna uruchomić mysqld.exe natomiast takiego parametru nie można użyć w mysqld-nt.exe, a ten właśnie plik był u mnie uruchamiany jako service na W2K3.

Dlatego musiałem znaleźć pośrednie rozwiązanie:

logujemy się do bazy w trybie tekstowym i zmieniamy hasło użytkownika na stary format:

  1. SET PASSWORD FOR uzytkownik@nazwa_hosta = OLD_PASSWORD ('twoje_haslo');


i wszystko śmiga jak należy.

P.S. Mam pytanie do ekspertów od MySQL, którzy przeglądają to forum. Jakie byłyby konsekwencje gdybym zamiast pliku mysqld-nt.exe użył do uruchomienia mysql'a pliku mysqld.exe?


pozdrawiam Acro6
Stefcio
Mam taki problem:

Pisze skrypt:
Kod
$polaczenie = @mysql_connect('localhost', 'uzytkownik', 'haslo')

or die('Brak połączenia z serwerem mysql. Błąd: '.mysql_error());


No i mi się nie łączy pisząc, że się nie zaloguję "starym sposobem"
Dobra, to wbijam do bazy przez phpmyadmin i wpiduje do konsoli to polecenie co kolega wyżej napisał.
jakiś błąd sie pokazuje, chyba, że wpisze bez "@nazwa_hosta" (próbowałem dac % ale też nie wyszło)
Mam więc kilka pytań:
1. co mam podac prz nazwa_hosta: moje IP czy nazwe serwa MySQL?
2. jeżeli moje ip, to co wpisac, żeby skrypt działał na stronie?
3. Wpisałem raz bez części @nazwa_hosta, wróciło do głównego menu, zalogowac sie nadal nie idzie więc co robić?
4. Czy jest jakiś inny sposób na to usilnie komplikowanie wszystkiego co możliwe?

Z góry dzięki winksmiley.jpg
erix
Cytat
jakiś błąd sie pokazuje

Wróżki, to nie to forum.

Przeczytaj, co mam na czerwono w stopce i zapamiętaj na zawsze.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.