Этот ответ несколько раз редактировался на основе новой информации, предоставленной ОП
Разрешено ли root подключаться к серверу с хоста, с которого вы подключаетесь? Если строка ошибки возвращает каноническое имя сервера, очень вероятно, что localhost не указывает на 127.0.0.1:
"Доступ запрещен для пользователя
root'@'MY.SERVER.HOST.NAME 'для
база данных 'dbname' "
Это должно отражать что-то вроде «Доступ запрещен для пользователя 'root' @ localhost '", а не имя сервера.
Попробуйте:
$con = mysql_connect("127.0.0.1","root","pass");
Редактировать (После получения дополнительной информации в комментариях)
Если вы подключаетесь с совершенно другого хоста, вы должны сказать, что MySQL user@remote_hostname_or_ip
разрешено подключаться и имеет соответствующие права для создания базы данных и пользователей.
Вы можете сделать это довольно легко, используя phpmyadmin (на сервере MySQL) или запрос типа:
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 ;
Я бы посоветовал не называть этого пользователя 'root', просто создать пользователя со всеми необходимыми глобальными привилегиями. В этом примере я использовал 192.168.1.1, который может легко быть именем хоста, просто убедитесь, что DNS настроен соответствующим образом. Укажите хост, совпадающий с точно , который отображается в журналах при подключении к удаленному серверу.
Вы также можете настроить пределы по вкусу. Более подробную информацию о синтаксисе CREATE USER
можно найти здесь , GRANT
здесь .
Редактировать
Если используется MySQL 4 - CREATE не вариант. Вы бы просто использовали GRANT ( 4.1 Документы по управлению пользователями )
Редактировать
Если вы используете C-Panel, просто используйте API . Хотя да, у него есть свои причуды, его легче обслуживать тем, кто его использует, а не специальным обходным путем. Многие успешные приложения используют его без проблем. Как и любой другой API, вам нужно быть в курсе изменений при его использовании.