Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP/Vagrant-主机访问主机数据库_Php_Mysql_Vagrant - Fatal编程技术网

PHP/Vagrant-主机访问主机数据库

PHP/Vagrant-主机访问主机数据库,php,mysql,vagrant,Php,Mysql,Vagrant,我用MySQL服务器安装了vagrant,试图让PHP网站使用localhost数据库,但遇到了问题(代码和MySQL都在同一个vagrant VM上)。但是,我可以通过Sequel Pro进行设置访问,并且可以使用相同的用户访问数据库并运行查询。在网站上,查询尚未完成 MySQL: mysql> select db,host,user from mysql.db; +-----+-----------+------+ | db | host | user | +-----+-

我用MySQL服务器安装了vagrant,试图让PHP网站使用localhost数据库,但遇到了问题(代码和MySQL都在同一个vagrant VM上)。但是,我可以通过Sequel Pro进行设置访问,并且可以使用相同的用户访问数据库并运行查询。在网站上,查询尚未完成

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个用户被分配到DB-为了让生活更轻松,我使用
root
来确保所有权限都是
Y

在my
/etc/mysql/my.cnf
中,我注释掉了
跳过内部锁定
,并尝试注释掉
绑定地址
或将其设置为
0.0.0

当我尝试从浏览器运行查询时(如验证用户)。我查看
/var/log/mysql/mysql.log
,最后一个查询是:

160328 23:00:32   127 Connect   root@localhost 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` = 'something@gmail.com' AND `User`.`password` = '5f4dcc3b5aa765d61d8327deb882cf99'
          127 Quit  
看起来查询正在运行,我检查了我的
mysql
正在建立连接


我已经试了两天,我开始觉得我错过了一些基本的东西。有人能给我指出正确的方向吗?

我不认为问题与MySQL或Vagrant有关,它可能来自您的PHP代码(您是否尝试过转储并终止查询返回的数据?)

您的Web服务器和MySQL服务器都位于同一服务器上,因此“绑定地址”不需要更改。这不会影响你

您有一个发送到MySQL的查询日志,因此您的web和MySQL之间的连接没有问题

为了更容易地检测问题,我认为应该创建一个新的PHP文件来测试数据库,比如test_db.PHP,打开错误报告并显示错误。看看会发生什么

我注意到您的查询是关于身份验证的选择,因此您可能在身份验证、检查会话配置、会话启动、会话销毁等方面存在问题


希望它能帮助你

如果数据库在服务器之外,PHP将连接到数据库(即,我可以连接到我们的生产数据库)。PHP上的错误日志中没有错误,转储查询一直返回
false
,就好像没有找到数据库一样。不过,我会继续找的。谢谢。强烈建议您使用PDO编写单独的文件来测试连接,并根据您在测试文件上传递的查询检查mysql的日志。还要检查查询的大小写,如果这是问题,请在[mysqld]部分修改my.cnf添加以下行:lower_case_table_names=2,并将绑定地址设置回0.0.0.0,以便从sequel pro进行测试。您可以使用相同的用户运行相同的查询,因此授予权限是可以的。最后检查从PHP启动连接的方式(数据库名、主机、端口)。祝你好运我想我帮不了你多少忙。