Помогите!
У меня есть PHP (PHP 5.2.5) скрипт на HOST1, пытающийся подключиться к базе данных MySQL2 HOST2. Оба хоста находятся в средах общего хоста, контролируемых через CPanel.
HOST2 настроен на разрешение удаленных подключений к базе данных из HOST1.
Я использую PHP-соединение: – $ h2 = IPADDRESS; $ dbu = DBUSER; $ dbp = DBPASS;
$DBlink = mysql_connect($h2, $dbu, $dbp);
Это всегда терпит неудачу: –
Access denied for user '<dbusername>'@'***SOMESTRING***' (using password: YES)
nb: SOMESTRING выглядит так, как будто это может быть связано с общей средой хоста.
Есть идеи???
BTW: Я могу сделать удаленные подключения к HOST2 с моего ноутбука с помощью OpenOffice через ODBC и SQLyog. Параметры SQLyog и ODBC точно такие же, как пытается использовать PHP-скрипт.
somestring, вероятно, обратный поиск для вашего веб-сервера.
Можете ли вы изменить привилегии из вашей cPanel? Вы сделали что-нибудь, чтобы разрешить доступ с вашей рабочей станции (ODBC)?
Сообщение об ошибке, похоже, указывает на то, что у вас есть сетевой доступ к mysql-серверу, но не привилегии для вашего имени пользователя на этом конкретном хосте.
Если вам разрешено предоставлять привилегии для вашей базы данных, вызывая:
GRANT SELECT ON. * К username@ip.address.of.host1 ИДЕНТИФИЦИРОВАН ПО «password»
может работать для вас. Я только что написал это из головы, вам может потребоваться удвоить синтаксис в mysql-docs.
Прочитали ли вы документацию MySQL о причинах отказа в доступе ?
Вы связались с поддержкой вашего хостинг-провайдера? Они должны иметь доступ к устранению неполадок подключения к базе данных. Люди в Интернете не имеют доступа.
Вам нужно указать имя базы данных? У вашей учетной записи может быть доступ для подключения только к конкретной базе данных. Функция mysql_connect()
не позволяет вам указать базу данных, но new mysqli()
функция new mysqli()
. Я не уверен, что это актуально – это может позволить вам подключиться, но дать вам ошибки при попытке запросить таблицы, отсутствующие в вашей базе данных.
Вы уверены, что используете правильный пароль? MySQL позволяет каждой учетной записи иметь другой пароль для каждого клиентского хоста. По общему признанию, это не общая конфигурация, но это возможно. Ваш хостинг-провайдер должен быть в состоянии сказать вам.
Просто некоторые идеи:
Редактировать:
В ответ на ваш комментарий я имел в виду, что HOST1 не может добраться до порта MySQL на HOST2. Разумеется, веб-службы будут работать, потому что порт 80 открыт для публики. Как заметил другой пользователь, вы получаете ответ, так что вы достигаете его. Я бы попробовал указать БД и дважды проверить, что вы создали.
Для второй части я имел в виду это: http://dev.mysql.com/doc/refman/5.0/en/adding-users.html
Вы можете указать, с какого хоста будет подключаться имя пользователя. Если он не установлен на IP-адрес HOST2 или подстановочный знак, HOST2 не может войти в систему с этими учетными данными.
Сообщение об ошибке означает, что вы можете связаться с сервером mySql, но пользователь, к которому вы пытаетесь войти в систему, не имеет доступа.
Либо у пользователя вообще нет доступа, либо у него есть доступ локально, но не от хоста, из которого вы подключаетесь.
Вы должны попытаться использовать имя хоста и порт, например $ h2 = IPADDRESS: 3307;