Wygląda na to, że masz tutaj kilka problemów,
Przerwa
Zacząłbym tutaj, ponieważ możesz mieć problem z uprawnieniami. Zalecam najpierw upewnienie się, że lokalny adres IP ma uprawnienia do łączenia się ze zdalną bazą danych MySQL i odwrotnie, w zależności od konfiguracji możesz to skonfigurować w phpMyAdmin, konsulu hostingowym, takim jak cPanel lub przez dostęp do powłoki. Sugeruję skonfigurowanie oddzielnego użytkownika z silnym hasłem do zdalnego dostępu. Powinieneś mieć statyczny adres IP w lokalnym połączeniu internetowym, jeśli go nie masz, skontaktuj się z dostawcą usług internetowych i zaaranżuj go.
W phpMyAdmin, jeśli masz wystarczający dostęp, poprzez zakładkę "uprawnienia użytkownika" i ustawienie "hosta" w "informacjach logowania". Nie polecałbym ustawienia „dowolny host” z oczywistych względów bezpieczeństwa.
W cPanel, pod "bazy danych" powinieneś znaleźć "remote mySQL", gdzie możesz ustawić swój adres IP.
Wreszcie w SSH,
- otwórz plik konfiguracyjny mySQL w swoim ulubionym edytorze, takim jak VI lub Nano, w Ubuntu znajduje się on w "/etc/mysql/my.conf",
- skomentuj „adres-wiązania =127.0.0.1”, więc wygląda to tak:„#adres-wiązania =127.0.0.1”,
- zrestartuj mySQL za pomocą "/etc/init.d/mysql restart",
- zaloguj się do MySQL za pomocą "mysql -u root -p",
- dla nowego użytkownika „UTWÓRZ UŻYTKOWNIKA 'MOJA_NAZWA_UŻYTKOWNIKA'@'localhost' ZIDENTYFIKOWANEGO PRZEZ 'MOJE_HASŁO'”
- z następującą adnotacją:„PRZYZNAJ WSZYSTKIE UPRAWNIENIA W „MOJEJ_BAZY DANYCH”.* TO 'MY_USERNAME'@'12.34.56.78' IDENTIFIED BY 'MY_PASSWORD';” - uwaga, zastąp adres IP „12.34.56.78” swoim rzeczywistym adresem IP.
- Powinieneś teraz otrzymać potwierdzenie wzdłuż linii zapytania ok.
- Na koniec wyjdź z mysql poleceniem „quit” i uruchom ponownie za pomocą „/etc/init.d/mysql restart”
UWAGA:Zalecam skonfigurowanie obu instalacji mySQL do zdalnego dostępu.
Polecam teraz przetestowanie tego, uruchamiając mały skrypt na lokalnym komputerze, coś takiego jak
<?php
$host = 'mysql_remoteip';
$user = 'mysql_username';
$pass = 'mysql_password';
$db = 'mysql_database';
$link = mysql_connect($host, $user, $pass) or die("Can not connect." . mysql_error());
mysql_select_db($db) or die("OOPS! I can not connect to the remote mySQL database, I was given the following error: ".mysql_error());
$sql = "SELECT column FROM table WHERE column='my_var'";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)) {
if(empty($row['column']) {
echo "WHOOPS! I could not get information from the mySQL, was there data for me to retrieve in the database?";
} else {
echo "The data I retrieved is:<br />"
echo $row['column'];
}
}
?>
UWAGA:powinieneś mieć dane w bazie danych, aby skrypt działał poprawnie, wynik bez danych wyświetli komunikat, że skrypt nie może pobrać danych, to nadal ustali, czy masz teraz dostęp do bazy danych, czy nie, ale nie Upewnij się, że jest w 100% sprawny.
MISTRZ LUB NIEWOLNIK
Tak, jest to możliwe, pod warunkiem, że masz wystarczający dostęp
W phpMyAdmin:
- w zakładce „replikacja” znajdziesz kreatora, który dostarczy Ci kod do ustawienia tego w pliku konfiguracyjnym mySQL (w Ubuntu znajduje się w „/etc/mysql/my.conf”),
- kliknij link, aby skonfigurować serwer główny
- wprowadź informacje w formularzu, skopiuj kod
- przejdź do pliku konfiguracyjnego (lokalizacja powyżej) i dodaj kod dostarczony przez phpMyAdmin
- Po zaktualizowaniu pliku konfiguracyjnego uruchom ponownie mySQL i kliknij przycisk Przejdź w phpMyAdmin, to potwierdzi zmiany
- Teraz ponownie w zakładce „replikacja” kliknij link, aby skonfigurować serwer podrzędny
- upewnij się, że masz unikalny identyfikator serwera w swoim pliku konfiguracyjnym, jeśli nie, dodaj linię dostarczoną przez phpMyAdmin w sekcji [mysqld] pliku
- Wypełnij wymagane informacje i kliknij Idź
To powinno skonfigurować twoją replikację.
SYNCHRONIZUJ
Jeśli wszystko inne zawiodło, przejdź w phpMyAdmin do zakładki „Synchronizuj”, wprowadź informacje i odejdź, wystarczy potwierdzić synchronizację na następnej stronie i 2 sekundy później skończysz, to takie proste.
W przypadku serwerów produkcyjnych osobiście mam konfigurację replikacji typu master/slave, ale w przypadku programowania synchronizuję dane „na żywo” w celu zreplikowania błędu lub problemu, ponieważ potrzebuję synchronizacji tylko raz na 6-12 miesięcy. Jeśli potrzebuję danych na żywo lokalnie, skonfigurowałbym replikację master/slave