【问题标题】:Copying database backup files from xamp/mysql/data of windows to linux in path /var/lib/mysql将windows的xampp/mysql/data中的数据库备份文件复制到linux路径/var/lib/mysql
【发布时间】:2026-01-11 12:10:01
【问题描述】:

将数据库备份文件从windows的xamp/mysql/data复制到路径/var/lib/mysql的linux,但在linux的phpmyadmin中只创建空数据库。

请有人帮我解决这个问题,我只有这些文件备份

【问题讨论】:

  • 您的数据库引擎是什么以及如何将数据从 windows 复制到 linux。
  • 我已将数据库文件复制到外部驱动器中

标签: mysql linux phpmyadmin ubuntu-14.04


【解决方案1】:

最好的办法是-

Step1:通过mysqldump从windows备份-

mysqldump -uroot -proot123 -A > backup.sql

Step2:将此备份移至linux,您可以使用winscp工具。

步骤 3:现在将此备份恢复到 linux 机器。

mysql -uroot -proot123 < backup.sql

修改: 看来您的数据库引擎是 myisam,而您只是将文件/文件夹从窗口复制到 linux,因此请按照以下方式授予权限-

chown -R mysql.mysql /var/lib/mysql

【讨论】:

  • 感谢您的回答。但我在外部驱动器中只有备份文件,我卸载了 Windows
  • 您的数据库引擎 innodb 或 myisam 是什么,您在外部驱动器中备份的格式是什么。
  • apache2 phpmyadmin。数据库文件夹在该表文件中以不同的扩展名存在,例如 .frm .MYD .TRG
  • 显示错误:无法初始化 batch_readline - 可能是输入源是目录或块设备。
  • 为此,您需要转到 linux 服务器,然后从 linux 提示符而不是 mysql 提示符执行此命令。
【解决方案2】:

首先在 Linux 上的用户主文件夹中创建一个包含 mysql root 密码的 .my.cnf 文件。 在 Windows 上,存在 .my.ini 或具有相同目的的东西。这样一来,您就不必在接下来的步骤中重新输入密码很多次,我担心您很可能会重复几次,直到正确为止。 :)

由于 unix/linux 和 windows 有不同的文件保存方式,您很可能在简单的复制恢复过程中遇到错误,具体取决于您复制文件的方式。

您最好的选择可能是将原始mysql 文件夹复制到另一台Windows 机器并相应地保存它们,以便mysql 可以找到它们。 (当然,使用已安装的mysql 实例。)如果没有立即找到数据库,我不知道您可能还需要什么,因为我之前从来没有这样做过,并且这里没有测试设置来检查这种情况出去。

当通过 WINDOWS 服务器上的mysql 找到数据库时,从mysql cli 提示符中查找数据库使用的编码等:

SELECT SCHEMA_NAME 'database', default_character_set_name 'charset', DEFAULT_COLLATION_NAME 'collation' FROM information_schema.SCHEMATA;

然后从 MYSQL CLI 在 LINUX 服务器上创建一个具有相同名称和相同编码的新数据库:

create database <db-name> character set <charset> collate <collation>;

然后在 WINDOWS 服务器上的 CMD 窗口中,执行 mysqldump,这在 Windows 上应该看起来很熟悉,就像在 linux 上一样:

mysqldump  <db-name>  >  <db-name>.sql

然后将转储复制到 LINUX 服务器并重放它:

mysql  <db-name>  <  <db-name>.sql

之后,您将不得不重新创建一个用户(如果您知道您的 Web 应用程序使用哪个用户和密码来访问数据库,请使用这些凭据创建一个新用户并授予他对您的数据库的完全访问权限。

如果您碰巧不知道凭据,请创建一个任意用户,然后在您的 Web 应用程序的配置文件中更改数据库凭据。

如果遇到问题,请检查您复制的文件的unix文件权限,以便mysql可以访问它们。

祝你好运,伙计。

【讨论】:

    最近更新 更多