Nie jestem do końca jasny, dlaczego stało się to problemem w mojej instalacji XAMPP, ponieważ używam również PHP 5.3.x na lokalnym serwerze i nie miałem tam tych problemów. Ma to jednak związek z moim serwerem mySQL działającym w trybie szyfrowania „starym hasłem”. Nowsze wersje PHP nie zezwalają na tego rodzaju połączenia, więc musisz zaktualizować serwer mySQL, aby używał nowszego szyfrowania haseł. Oto kroki, zakładając, że masz kontrolę nad serwerem mySQL. Jeśli nie, wykracza to poza zakres mojej wiedzy.
-
znajdź plik konfiguracyjny dla serwera mysql o nazwie
my.cnf
. Znalazłem swój w/etc/my.cnf
. Możesz go edytować za pomocąsudo nano /etc/my.cnf
-
Poszukaj wiersza z napisem
old_passwords=1
i zmień to naold_passwords=0
. Poinformowałeś teraz serwer, że następnym razem, gdy zostanie uruchomiony i zostanie poproszony o zaszyfrowanie hasła za pomocą polecenia PASSWORD(), użyje nowego 41-znakowego szyfrowania zamiast 16-znakowego „starego” stylu szyfrowania -
Teraz musisz zrestartować serwer / usługę mysql. YMMV, ale w Fedorze można to łatwo zrobić za pomocą
sudo service mysqld restart
. Sprawdź instrukcje systemu operacyjnego dotyczące ponownego uruchomienia demona lub usługi mysql -
Teraz musimy właściwie edytować naszego
user
tabela w mysql. Więc otwórz interaktywną powłokę mysql (na serwerze możesz wpisaćmysql -uYourRootUsername -pYourRootPassword
) -
Zmień na
mysql
Baza danych. Jest to baza danych, która zawiera wszystkie dobre rzeczy do obsługi i uwierzytelniania serwera. Aby pracować z tą bazą danych, musisz mieć uprawnienia administratora. Jeśli otrzymasz odmowę dostępu, jesteś SOL. Przepraszam.use mysql;
przełączy się na tę bazę danych -
Teraz chcemy zaktualizować użytkownika, który sprawiał Ci smutek. Ostatecznie prawdopodobnie będziesz chciał zaktualizować wszystkich swoich użytkowników, ale na razie skupiamy się tylko na użytkowniku, który zgłosił błąd.
update user set Password=password('YOUR_PASSWORD') where User='YOUR_USERNAME';
-
Teraz wystarczy powiedzieć mysql, aby używał nowego hasła do uwierzytelniania, gdy użytkownik próbuje się połączyć.
flush privileges;
.
Powinieneś być gotowy!