使用 Vagrant 时如何导入 MySQL 数据库
How to Import a MySQL Database When Using Vagrant
我在使用 vagrant 导入数据库时遇到问题。
我有 运行 vagrant up
,一切正常。然后我 运行 vagrant ssh
,登录到 mysql,设置数据库和用户——再次一切正常。
然后我退出 mysql(但不是 vagrant ssh
)和 运行 和 运行 以下命令:
mysql -u root -p mydatabase < "C:\Users\moshe\Websites\Projects\backup.sql"
此时我收到以下消息:
-bash: C:\Users\moshe\Websites\Projects\backup.sql: No such file or directory
知道我做错了什么吗?
P.S。如果相关 - 我正在研究 Windows 10.
P.S。 2:我查看了 this question 并尝试将 backup.sql 移动到 .vagrant 文件夹中,然后 运行 执行 mysql 命令,但它仍然无效。
更新
df 命令 运行 在 vagrant ssh
vagrant@scotchbox:~$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 41251136 6750852 32764372 18% /
none 4 0 4 0% /sys/fs/cgroup
udev 1019772 12 1019760 1% /dev
tmpfs 204992 380 204612 1% /run
none 5120 0 5120 0% /run/lock
none 1024956 0 1024956 0% /run/shm
none 102400 0 102400 0% /run/user
192.168.33.1:/C/Users/moshe/Websites/Projects 249478140 80929092 168549048 33% /var/www
我很确定您的 VM 中没有 Windows 10,是吗?至少错误消息包含 bash
通常是 Linux shell.
因此,如果您在那里有一些 Linux,通常以 C:\
开头的路径不起作用。相反,Linux 文件系统中必须有一些挂载点映射到您的 Windows 文件系统(共享)。
查看您 VM 中的 /vagrant
文件夹,您很可能会在该目录的子文件夹中找到您的备份文件。尝试 find /vagrant -name backup.sql
找到正确的路径。
但是,/vagrant
只是 VirtualBox 中挂载文件夹的默认值。因此,如果它不存在,请在您的 VM 中尝试命令 mount | grep vboxsf
。输出应与此类似:
vagrant on /vagrant type vboxsf (uid=1000,gid=1000,rw)
var_www on /var/www type vboxsf (uid=33,gid=33,rw)
输出中的条目之一(不是本例中的条目)将是您的文件所在的条目。
或者,您可以使用命令 df
,它为您提供主机目录(例如 C:\...
)和 VM 中的文件夹(例如 /var/www
)之间的直接关系。
在你的情况下,这是最后一行
192.168.33.1:/C/Users/moshe/Websites/Projects 249478140 80929092 168549048 33% /var/www
这表明 C:\Users\moshe\Websites\Projects
(以类 Unix 表示法)映射到 /var/www
。
我在使用 vagrant 导入数据库时遇到问题。
我有 运行 vagrant up
,一切正常。然后我 运行 vagrant ssh
,登录到 mysql,设置数据库和用户——再次一切正常。
然后我退出 mysql(但不是 vagrant ssh
)和 运行 和 运行 以下命令:
mysql -u root -p mydatabase < "C:\Users\moshe\Websites\Projects\backup.sql"
此时我收到以下消息:
-bash: C:\Users\moshe\Websites\Projects\backup.sql: No such file or directory
知道我做错了什么吗?
P.S。如果相关 - 我正在研究 Windows 10.
P.S。 2:我查看了 this question 并尝试将 backup.sql 移动到 .vagrant 文件夹中,然后 运行 执行 mysql 命令,但它仍然无效。
更新 df 命令 运行 在 vagrant ssh
vagrant@scotchbox:~$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 41251136 6750852 32764372 18% /
none 4 0 4 0% /sys/fs/cgroup
udev 1019772 12 1019760 1% /dev
tmpfs 204992 380 204612 1% /run
none 5120 0 5120 0% /run/lock
none 1024956 0 1024956 0% /run/shm
none 102400 0 102400 0% /run/user
192.168.33.1:/C/Users/moshe/Websites/Projects 249478140 80929092 168549048 33% /var/www
我很确定您的 VM 中没有 Windows 10,是吗?至少错误消息包含 bash
通常是 Linux shell.
因此,如果您在那里有一些 Linux,通常以 C:\
开头的路径不起作用。相反,Linux 文件系统中必须有一些挂载点映射到您的 Windows 文件系统(共享)。
查看您 VM 中的 /vagrant
文件夹,您很可能会在该目录的子文件夹中找到您的备份文件。尝试 find /vagrant -name backup.sql
找到正确的路径。
但是,/vagrant
只是 VirtualBox 中挂载文件夹的默认值。因此,如果它不存在,请在您的 VM 中尝试命令 mount | grep vboxsf
。输出应与此类似:
vagrant on /vagrant type vboxsf (uid=1000,gid=1000,rw)
var_www on /var/www type vboxsf (uid=33,gid=33,rw)
输出中的条目之一(不是本例中的条目)将是您的文件所在的条目。
或者,您可以使用命令 df
,它为您提供主机目录(例如 C:\...
)和 VM 中的文件夹(例如 /var/www
)之间的直接关系。
在你的情况下,这是最后一行
192.168.33.1:/C/Users/moshe/Websites/Projects 249478140 80929092 168549048 33% /var/www
这表明 C:\Users\moshe\Websites\Projects
(以类 Unix 表示法)映射到 /var/www
。