Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Połączenie się z MySQLem z innego komputera
Forum PHP.pl > Forum > Bazy danych > MySQL
diniox
W przypadku gdy Apache2 z PHP5 działają na tym samym serwerze wystarczy w PHP napisać:
  1. <?php
  2. try {
  3.  $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
  4.  echo 'dziala';
  5.  $dbh = null;
  6. } catch (PDOException $e) {
  7.  echo 'nie dziala';
  8.  die();
  9. }
  10. ?>

A co jeśli Apache2 z PHP5 są na innym serwerze niż serwer baz danych - MySQL5 (przykladowo przyklad.pl)? Analogiczny kod wyglada tak:
  1. <?php
  2. try {
  3.  $dbh = new PDO('mysql:host=przyklad.pl;dbname=test', $user, $pass);
  4.  echo 'dziala';
  5.  $dbh = null;
  6. } catch (PDOException $e) {
  7.  echo 'nie dziala';
  8.  die();
  9. }
  10. ?>

Ale przy standardowej konfiguracji nie działa (przechwytuje wyjątek z komunikatem SQLSTATE[HY000] [2003] Can't connect to MySQL server on przyklad.pl). Czy zle rozumiem DSN w PDO czy to kwestia skonfigurowania MySQL? Jeśli to drugie to jak to zrobić?
kyujitsu
zaloguj sie na jednostke serwera edytuj plik: /etc/mysql/my.cnf
Kod
bind-address                            = 127.0.0.1

i zakomentuj tą linijke smile.gif albo poprostu usuń zapisz plik, restart serwera MySQL
jeśli masz firewall'a to otwórz standardowo port 3306 TCP
i teraz mozesz się połączyć, ale tylko jako zwykły użytkownik, root może się zalogować tylko z maszyny localhost
chyba ze jako użyszkodnik masz pełną władzę nad własną bazą danych np.
Kod
GRANT ALL PRIVILEGES ON baza_danych.* TO użyszkodnik IDENTIFIED BY 'password';

jako użyszkodnik nie możesz sobie nadać prawa do baz danych: mysql oraz information_schema

i dodatek zmieniony:
Kod
$dbh = new PDO('mysql:host=przyklad.pl:3306;dbname=test', $user, $pass);


PS: zacznij podawać adresy przy łączeniu się z bazą danych w postaci IP:port, jest pewniejsze, że tak mi się wydaje winksmiley.jpg mnie akurat nie zawsze udaje się połączenie przez domene(subdomene)
webdice
Zaloguj się do MySQL'a, będziesz miał bazę mysql w tabeli users, w polu host przy danym użytkowniku zmień wartość pola na %.
kyujitsu
Cytat(webdicepl @ 24.04.2008, 08:23:30 ) *
w polu host przy danym użytkowniku zmień wartość pola na %.

ale zmiana dla uzytkownika 'root' na ta wartosc chyba nie bedzie bezpieczne dry.gif , według mnie pomiń root'a
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-2025 Invision Power Services, Inc.