在路径/var/lib/mysql
中将数据库备份文件从windows的xamp/mysql/data
复制到linux,但在linux的phpmyadmin中只创建了空数据库。
请有人帮我解决这个问题,我只有这些文件备份
最好的方法是-
步骤1:通过mysqldump-从窗口进行备份
mysqldump -uroot -proot123 -A > backup.sql
步骤2:将此备份移动到linux,您可以使用winscp工具进行备份。
步骤3:现在将此备份恢复到linux机器。
mysql -uroot -proot123 < backup.sql
修改:看起来你的数据库引擎是myisam,你只是从窗口复制了文件/文件夹到linux,所以按照下面的-授予权限
chown -R mysql.mysql /var/lib/mysql
首先在linux上的用户主文件夹中创建一个包含mysql根密码的.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;
然后在LINUX服务器上从MYSQL CLI:创建一个具有相同名称和相同编码的新数据库
create database <db-name> character set <charset> collate <collation>;
然后在CMD窗口中的WINDOWS服务器上,执行mysqldump
,这在像linux上一样的窗口上应该很熟悉:
mysqldump <db-name> > <db-name>.sql
然后将转储复制到LINUX服务器并重播:
mysql <db-name> < <db-name>.sql
之后,你必须重新创建一个用户(如果你知道你的网络应用程序用于访问数据库的用户和密码,请使用这些凭据创建一个新用户,并授予他对你的数据库的完全访问权限
如果您不再知道凭据,请创建一个任意用户,然后在web应用程序的配置文件中更改数据库凭据。
如果您有问题,请检查您复制的文件的unix文件权限,以便mysql可以访问它们。
祝你好运,伙计。