2013-07-15 2 views
0

Моя конфигурация относительно проста. У меня есть:MySQL на внешнем сервере, доступ запрещен действительным пользователем

  • сервер, на котором запущен API.

  • Этот сервер подключается к базе данных на отдельном сервере.

  • Я могу подключиться к базе данных с моего ПК с помощью Sequel Pro по SSH до сервера API, а затем подключиться к серверу базы данных от .

  • Я могу вручную SSH в терминале к серверу API и подключиться к базе данных с использованием того же идентификатора пользователя и пароля из команды MYSQL .

Однако, когда мой PHP скрипт пытается PDO_connect я ....

PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000] [1044] Access denied for user 'validusername'@'%' to database 'live'' in /var/www/live/community/backend/lib/Db/Connection.php:27 
Stack trace: 

0 /var/www/live/community/backend/lib/Db/Connection.php(27): PDO->__construct('mysql:host=10.2...', 'validusername', 'validPass', Array) 

1 /var/www/live/community/backend/lib/Communication/Base.php(57): Changers_Db_Connection->__construct('10.248.174.31', 'live', 'validusername', 'validPass', NULL)\n 

2 /var/www/live/factory/index.php(40): Communication_Base->useSourceConnection('10.248.174.31', 'live_licence', 'validusername', 'validPass') 

3 {main}\n thrown in /var/www/live/community/backend/lib/Changers/Db/Connection.php on line 27 

серверов Ubuntu с помощью Memcached.

Меня не интересует смертность ошибки, так как бессмысленно продолжать работу системы. Мне действительно нужно понять, почему я могу подключаться любым способом, кроме этого.

Любые советы, оцененные.

С уважением Крис

+0

Egen, соединяющий вручную, вы пытались «использовать вживую» и что-то выбрать? –

+0

Да, как через Sequal Pro, так и в командной строке я получаю полный доступ к базе данных и могу выбирать, вставлять и удалять. Отказано только в PHP-скрипте. –

+0

Хорошо, если вы подключаетесь через SSH с вашего ПК, похоже, что вы переадресовываете локальный порт на свой компьютер и подключаетесь через него, поэтому в БД он выглядит как user @ localhost. Установлен ли сервер для разрешения пользователя @%? – mdd061000

ответ

0

доступ был ограничен к известным IP-адресам. Таким образом, отправка «validuser» @ '%' НЕ приемлема. Все остальные методы отправляют «validuser» @ «IP-адрес сервера API», однако скрипт PHP отправляет «validuser» @ «%». Я не на 100% уверен, что исправил его, но в конце концов я удалил Symfony 2 и PHP   5 и снова установил.

Смежные вопросы