Ta odpowiedź była kilkakrotnie edytowana na podstawie nowych informacji dostarczonych przez OP
Czy root jest faktycznie dozwolony? połączyć się z serwerem z hosta, z którego się łączysz? Jeśli ciąg błędu zwraca nazwę kanoniczną serwera, istnieje bardzo duża szansa, że „localhost” nie wskazuje na 127.0.0.1 :
Powinno to brzmieć jak „Odmowa dostępu dla użytkownika 'root'@localhost'”, a nie nazwa serwera.
Wypróbuj:
$con = mysql_connect("127.0.0.1","root","pass");
Edytuj (Po więcej informacji podanych w komentarzach)
Jeśli łączysz się z zupełnie innego hosta, musisz poinformować MySQL [email protected]_hostname_or_ip
może się łączyć i ma odpowiednie uprawnienia do tworzenia bazy danych i użytkowników.
Możesz to zrobić dość łatwo za pomocą phpmyadmina (na serwerze MySQL) lub zapytania takiego jak:
CREATE USER 'root'@'192.168.1.1' IDENTIFIED BY PASSWORD 'secret';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'192.168.1.1' IDENTIFIED BY PASSWORD 'secret' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
Radziłbym nie nazywać tego użytkownika „root”, po prostu utwórz użytkownika ze wszystkimi potrzebnymi globalnymi uprawnieniami. W przykładzie użyłem 192.168.1.1, który może być nazwą hosta, po prostu upewnij się, że DNS jest odpowiednio skonfigurowany. Określ hosta do dopasowania dokładnie tak jak pojawia się w logach, gdy łączysz się ze zdalnym serwerem.
Możesz także dostosować limity do smaku. Więcej informacji na temat CREATE USER
składnię można znaleźć tutaj
, GRANT
tutaj
.
Edytuj
Jeśli używasz MySQL 4 - CREATE nie jest opcją. Wystarczy użyć GRANT (4.1 Dokumenty dotyczące zarządzania użytkownikami )
Edytuj
Jeśli używasz C-Panel, po prostu użyj API . Chociaż tak, ma swoje dziwactwa, łatwiej jest utrzymywać rzeczy, które go używają, niż obejść się doraźnie. Wiele aplikacji, które odniosły sukces, używa go bez problemu. Jak każdy inny interfejs API, podczas korzystania z niego musisz być na bieżąco ze zmianami.