2016-03-28 3 views
0

Я настраиваю брандмауэр с сервером MySQL и пытаюсь заставить сайт PHP использовать локальную БД и работать в проблемах (Оба, код и MySQL находятся на одной и той же Vagrant VM). Тем не менее, у меня есть установочный доступ через Sequel Pro и вы можете получить доступ к БД с тем же пользователем и выполнить запросы. На веб-сайте запросы не заполняются.PHP/Vagrant - Host Accessing Host Host

MySQL:

mysql> select db,host,user from mysql.db; 
+-----+-----------+------+ 
| db | host  | user | 
+-----+-----------+------+ 
| ojs | localhost | ojs | 
| ojs | localhost | ojs2 | 
| ojs | localhost | root | 
+-----+-----------+------+ 
3 rows in set (0.00 sec) 

Так 3 пользователю назначается в БД - чтобы сделать жизнь проще, я использовал root, чтобы убедиться, что все разрешения были Y.

В моей /etc/mysql/my.cnf я закомментирована skip-internal-locking и попытался либо закомментировать bind-address или установить его в 0.0.0.0

При попытке выполнить запрос из браузера (например, проверки пользователя). Я смотрю в /var/log/mysql/mysql.log, последний запрос:

160328 23:00:32 127 Connect [email protected] on ojs 
      127 Query SELECT `User`.`id`, `User`.`email`, `User`.`fname`, `User`.`lname`, `User`.`default_phone`, `User`.`default_ext`, `User`.`password`, `User`.`datecreated_ts`, `User`.`lastlogin_ts`, `User`.`last_deliveryaddress_id`, `User`.`last_billingaddress_id`, `User`.`auth_level`, `User`.`no_radio_email` FROM `User` WHERE `User`.`email` = '[email protected]' AND `User`.`password` = '5f4dcc3b5aa765d61d8327deb882cf99' 
      127 Quit 

Так выглядит запрос работает, и я проверил, что мой mysql делает соединение.

Я пытался в течение двух дней, и я начинаю с того, что мне не хватает чего-то фундаментального. Может кто-нибудь указать мне в правильном направлении, пожалуйста?

ответ

0

Я не думаю, что проблема связана с MySQL или Vagrant, может исходить от вашего PHP кода (вы пытались сбросить и умереть возвращаемые данные из запроса?)

Как ваш веб-сервер и Сервер MySQL на том же сервере, поэтому «bind-address» не нужно изменять. Это не повлияет.

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

Чтобы определить проблему проще, я думаю, вам нужно создать новый PHP-файл для тестирования вашего db, например test_db.php, включить отчет об ошибках и display_errors. и посмотреть, что происходит

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

Надеются, что это поможет вам!

+0

PHP будет подключаться к базе данных, если ее вне сервера (т. Е. Я могу подключиться к нашей производственной БД). Ошибок в журнале ошибок на PHP нет, а запросы на сброс данных возвращают 'false', как если бы он не обнаружил БД. Однако я буду продолжать искать. Благодарю. – Bardworx

+0

Очень рекомендую вам писать, а отдельный файл использует PDO для проверки соединения и проверяет журнал mysql на основе вашего запроса, который вы передаете тестовому файлу. Также проверьте верхний и нижний регистр вашего запроса, если это проблема, измените my.cnf в разделе [mysqld], добавьте эту строку: lower_case_table_names = 2, а также верните адрес связывания 0.0.0.0 для проверки Из продолжения pro вы можете запускать один и тот же запрос с одним и тем же пользователем, поэтому предоставление привилегий в порядке. И последний раз проверьте, как вы инициировали соединение с PHP (dbname, host, port). Удачи! Думаю, я не мог вам помочь. –