Tato odpověď byla několikrát upravena na základě nových informací poskytnutých OP
Je root skutečně povolen připojit se k serveru z hostitele, ze kterého se připojujete? Pokud chybový řetězec vrací kanonický název serveru, je velmi dobrá šance, že „localhost“ neukazuje na 127.0.0.1:
To by mělo odrážet něco jako "Přístup odepřen pro uživatele 'root'@localhost'", nikoli název serveru.
Zkuste:
$con = mysql_connect("127.0.0.1","root","pass");
Upravit (Po více informací uvedených v komentářích)
Pokud se připojujete z úplně jiného hostitele, musíte MySQL sdělit [email protected]_hostname_or_ip
má povoleno se připojit a má příslušná oprávnění k vytváření databáze a uživatelů.
Můžete to udělat poměrně snadno pomocí phpmyadmin (na serveru MySQL) nebo dotazu jako:
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 ;
Doporučil bych nepojmenovávat tohoto uživatele 'root' , pouze vytvořit uživatele se všemi potřebnými globálními oprávněními. V příkladu jsem použil 192.168.1.1, což může být snadno název hostitele, jen se ujistěte, že je správně nastaven DNS. Zadejte hostitele, který se má přesně shodovat jak se objeví v protokolech, když se připojíte ke vzdálenému serveru.
Můžete také upravit limity podle chuti. Další informace o CREATE USER
syntaxi naleznete zde
, GRANT
zde
.
Upravit
Pokud používáte MySQL 4 - CREATE není možnost. Použili byste pouze GRANT (4.1 Dokumenty o správě uživatelů )
Upravit
Pokud používáte C-Panel, stačí použijte rozhraní API . I když ano, má to své zvláštnosti, snáze se udržuje věci, které jej používají, spíše než ad-hoc obcházení. Spousta úspěšných aplikací jej používá bez problémů. Jako každé jiné rozhraní API musíte mít při jeho používání přehled o změnách.