Вы, похоже, путаете хост, К которому подключаетесь, с хостом, С которого подключаетесь. Если база и скрипт живут на одном и том же сервере, то надо будет написать приблизительно так:
GRANT ALL PRIVILEGES ON имя_БД.* TO 'пользователь'@'localhost' IDENTIFIED BY 'пароль';
FLUSH PRIVILEGES;
Если же нет, то где-то так:
GRANT ALL PRIVILEGES ON имя_БД.* TO 'пользователь'@'хост_с_которого_подключаетесь' IDENTIFIED BY 'пароль';
504 появляется когда Nginx не дожидается ответа от бекенда (апача, php и т.п.). Возможно, серверу не хватает ресурсов обслужить все запросы или действуют какие-то ограничения.
Помимо .htpasswd туда надо бы положить еще .htaccess, в котором указать, что папка закрыта:
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /абсолютный пусть к .htpasswd/.htpasswd
Require valid-user
Например вот так: http://community.livejournal.com/ru_root/1725620.html
Можно набросать простой парсер, который файл один раз загонит в таблицу и потом селектить оттуда случайные записи.
У вас редактор, в котором правите шаблон, пишет в cp1251. Либо доставайте данные из БД в 1251, либо найдите редактор с поддержкой Юникода.
Пардон, если было:
В конфигурации сервера поищите строку php_admin_value open_basedir. Корень зла в ней а не в базе.
А чем Вам не подходит Cron для этой цели?
Про сейчас не скажу, но в 2007 Shoutcast не умел OGG, а для вещания по сети он лучше - не такая нагрузка на полосу, да и качество получше. Так что лучше цифровать в него. А дальше - да, Icecast.