我无法从运行 Ubuntu 的 Oracle VirtualBox 连接到主机操作系统(Win 7)上的 MySQL 数据库。我编写了这个 php 代码以进行连接,但我一直收到连接错误:
<?php
$dsn = 'mysql:host=192.168.1.9;dbname=finance';
$db_username = 'sdb_user';
$db_password = 'password';
try {
$db = new PDO($dsn, $db_username, $db_password);
}catch (PDOException $e) {
$error_message = $e->getMessage();
include('../errors/database_error.php');
exit();
}
$query = 'SELECT * FROM books';
$books = $db->query($query);
foreach ($books as $book) {
echo $book['title'];
}
?>
我知道代码有效,因为我可以使用 localhost 而不是 IP 地址从我的 Windows 7 主机操作系统运行它,而且我知道 VirtualBox 上的 Linux 和 Windows 7 都在同一个子网上,因为我可以成功 ping 另一个从每一边。
我相当确定我在 Windows 端也正确打开了端口 3306,但我不知道如何检查这是否是问题所在。
我还应该做些什么来让代码连接到 MySQL 数据库?
编辑:问题是端口没有为远程连接打开。打开端口后,我收到错误消息,指出我不允许连接到 sql 服务器。从那里我使用用户名“home”和密码“home”在 Windows MySQL 上创建了一个新用户,并且能够使用以下方式连接到它:
$ mysql -h 192.168.1.9 -u home -p
但是,当我运行我的文件时,现在显示为:
$dsn = 'mysql:host=192.168.1.9;dbname=finance';
$db_username = 'home';
$db_password = 'home';
我仍然收到“数据库错误”有什么建议吗?