PHP доступ к удаленной базе данных - PullRequest
2 голосов
/ 11 ноября 2008

Помощь!

У меня есть скрипт PHP (PHP 5.2.5) на HOST1, пытающийся подключиться к базе данных MySql HOST2. Оба хоста находятся в средах Shared Host, управляемых через 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 похоже, что это может быть как-то связано со средой общего хоста.

Есть идеи ???

Кстати: я могу устанавливать удаленные подключения к HOST2 с моего ноутбука, используя OpenOffice через ODBC и SQLyog. Настройки SQLyog и ODBC точно такие же, какие пытается использовать скрипт PHP.

Ответы [ 5 ]

4 голосов
/ 12 ноября 2008

somestring, вероятно, обратный поиск для вашего веб-сервера.

Можете ли вы изменить привилегии с вашей cPanel? Вы сделали что-нибудь, чтобы разрешить доступ с вашей рабочей станции (ODBC)?

Кажется, что сообщение об ошибке указывает на то, что у вас есть сетевой доступ к mysql-серверу, но нет привилегий для вашего имени пользователя с этого конкретного хоста.

Если вам разрешено предоставлять привилегии для вашей базы данных, выполните команду:

GRANT SELECT ON database. * TO username@ip.address.of.host1 ИДЕНТИФИЦИРОВАНО «паролем»

может работать на вас. Я просто написал это из головы, вы можете проверить синтаксис в mysql-docs.

2 голосов
/ 12 ноября 2008
  • Читали ли вы документацию MySQL по Причины ошибок доступа запрещены ?

  • Обращались ли вы в службу поддержки вашего хостинг-провайдера? Они должны иметь доступ для устранения неполадок подключения к базе данных. Люди в интернете не имеют доступа.

  • Вам нужно указать имя базы данных? Ваша учетная запись может иметь доступ для подключения только к определенной базе данных. Функция mysql_connect() не позволяет указывать базу данных, но new mysqli(). Я не уверен, что это уместно - это может позволить вам подключиться, но выдает ошибки при попытке запросить таблицы, которых нет в вашей базе данных.

  • Вы уверены, что используете правильный пароль? MySQL позволяет каждой учетной записи иметь разные пароли для каждого клиентского хоста. Правда, это не обычная конфигурация, но это возможно. Ваш хостинг провайдер должен быть в состоянии сообщить вам.

1 голос
/ 11 ноября 2008

Просто несколько идей:

  • HOST1 не имеет удаленного доступа к HOST2 (общий хост запрещен)
  • У учетной записи MySQL нет доступа с HOST1 (IP-адрес указан при создании учетной записи или подстановочный знак)

Edit:

В ответ на ваш комментарий я имел в виду, что HOST1 не может получить доступ к порту MySQL на HOST2. Конечно, веб-службы будут работать, потому что порт 80 открыт для публики. Однако, как указал другой пользователь, вы получаете ответ, поэтому вы достигаете его. Я попытался бы указать БД и дважды проверить команду создания учетной записи, которую вы запустили.

Для второй части я имел в виду следующее: http://dev.mysql.com/doc/refman/5.0/en/adding-users.html

Вы можете указать, к какому хосту может подключаться имя пользователя. Если для него не задан IP-адрес или подстановочный знак HOST2, HOST2 не сможет войти с этими учетными данными.

0 голосов
/ 20 июня 2009

Вы должны попытаться использовать имя хоста и порт, например, $ h2 = IPADDRESS: 3307;

0 голосов
/ 12 ноября 2008

Сообщение об ошибке означает, что вы можете связаться с сервером mySql, но у пользователя, к которому вы пытаетесь войти, нет доступа.

Либо пользователь вообще не имеет доступа, либо имеет локальный доступ, но не с хоста, с которого вы подключаетесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...