Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Połączenie się z MySQLem z innego komputera, PHP i PDO
diniox
post
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 6.04.2008

Ostrzeżenie: (0%)
-----


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ć?
Go to the top of the page
+Quote Post
kyujitsu
post
Post #2





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 24.04.2008

Ostrzeżenie: (0%)
-----


zaloguj sie na jednostke serwera edytuj plik: /etc/mysql/my.cnf
Kod
bind-address                            = 127.0.0.1

i zakomentuj tą linijke (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) mnie akurat nie zawsze udaje się połączenie przez domene(subdomene)

Ten post edytował kyujitsu 24.04.2008, 01:58:40
Go to the top of the page
+Quote Post
webdice
post
Post #3


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Zaloguj się do MySQL'a, będziesz miał bazę mysql w tabeli users, w polu host przy danym użytkowniku zmień wartość pola na %.
Go to the top of the page
+Quote Post
kyujitsu
post
Post #4





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 24.04.2008

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/dry.gif) , według mnie pomiń root'a
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.12.2025 - 10:20