在使用美国主机过程中,MySQL数据库可以说是我们使用最多的数据库,管理MySQL的工具通常是phpMyAdmin,导入导出MySQL数据库通常也可以通过phpMyAdmin来完成。
使用phpMyAdmin导入数据库时,会有相应的限制,比如数据库文件大小不能大于2M等(取决于相关的设定,但肯定是有限制的)。另外,由于php有执行时间的限制,一般导入比较大的MySQL数据库时,可能会出现无法完全导入的情况。
前些时候,使用了一个叫StableHost的主机,通过phpMyAdmin导入2M多的数据库(gzip压缩的,解压后有将近60M),试了几次都无法导入成功,出现的错误是php脚本执行时间超时。又没有SSH,无奈之下,搞了一个php程序来调用系统命令导入了这个数据库。
搞了一个简单的php程序,使用php的函数exec()来执行系统命令,实现在没有SSH情况下,导入比较大的MySQL数据库。
$ret = exec($cmd);
将数据库文件通过FTP上传到空间上并解压,输入的命令$cmd类似为:
mysql –force –quick -h mysqlhost -u Username -pPassword DatabaseID < File.sql
为了保险起见,北山还在命令的后面加了一个&, 让后台运行命令,这样php程序就可以很快结束,以免超时。呵呵~~很顺利的把那个数据库。
还有,不仅仅是在导入数据库时采用这种方式,在在线压缩和解压文件时,北山也经常通过这种方式来做。运用的命令当然是Linux主机基本都支持的命令tar和gzip。有些Linux美国主机也支持zip命令,但是有些不支持,为了保险起来,北山还是建议使用tar命令来压缩和解压缩文件,避免一些不必要的麻烦。
最后附上北山使用的这个非常简单的php程序,点击这里下载,使用方法也非常简单
1. 将这个php程序 beishan-info-exec.php 上传到空间上
2. 运行 beishan-info-exec.php , 比如http://www.your-domain.com/beishan-info-exec.php
3. 在页面中输入要执行的命令,比如数据库导入命令,或者是压缩解压文件命令等。
备注:文件名称以及上传目录可以根据自己的实际情况进行修改,不要让别人猜出来了,否则很危险,建议使用完后马上删除这个程序,确保安全。当然,也没必要猜测北山的空间上是否有这个程序,呵呵~~没有这个程序 🙂
止戈 says:
August 12th, 2009 at 8:34 am
能写得详细点不,我是新手,像命令这些都不懂的,参数可以解释下不?
谢谢了,最近被一个压缩后8M大的数据库弄得头疼,谢谢
数米基金网 says:
August 12th, 2009 at 9:23 am
我觉得也的很详细了, 仔细看2遍能看懂的
Beishan says:
August 12th, 2009 at 9:58 am
@止戈
如果你数据库主机是localhost,也就是本机,简单使用下面的命令就可以了
mysql -u Username -pPassword DatabaseID < File.sql 其中Username,Password,DatabaseID,File.sql等就是字面的意思,分别是数据库用户名,密码,数据库名称,以及要导入的数据库文件名 使用SSH和日志中提到的方法,还是需要了解一点Linux命令
A Side Story says:
August 12th, 2009 at 6:43 pm
这个时候就体现出SSH的优势来了,所以让主机支持SSH还是很有用的!
Beishan says:
August 12th, 2009 at 10:39 pm
@A Side Story
那是,有SSH当然方便多了
Mr.Wang says:
August 13th, 2009 at 11:02 am
phpmyadmin相当于在服务器本机上操作数据库,通过web方式导入有限制是必然的
不用SSH也行
用MySQL客户端工具吧,比如SQLYog,几个G的sql文件导入都不成问题。前提是数据库要开远程连接。
hello says:
August 13th, 2009 at 6:43 pm
帝国备份王
Beishan says:
August 13th, 2009 at 9:10 pm
@Mr.Wang
谢谢分享你的方法
博译论 says:
August 14th, 2009 at 6:36 am
不知道北山兄对允许放成*用品商城的主机熟悉不,美国或香港的都行!
Beishan says:
August 14th, 2009 at 1:41 pm
@博译论
不好意思,我这里不讨论有可能带来麻烦的话题
21 says:
August 16th, 2009 at 6:21 pm
本机装一个MySQL也可以解决这个问题的~
21 says:
August 16th, 2009 at 6:21 pm
或者找一个第三方的支持SSH的空间间接导入也行~
我一般用DH,国外对国外,速度快,效率高,不经过本地~
Beishan says:
August 16th, 2009 at 11:55 pm
@21
具体怎么操作,写详细一点呗
exchange says:
August 21st, 2009 at 6:49 pm
能不能详细点呢?有点不太理解你那个命令
Beishan says:
August 21st, 2009 at 10:44 pm
具体的导入MySQL数据库命令,查一下MySQL的帮助就可以了,这里也没办法详细讲
止戈 says:
August 24th, 2009 at 4:30 pm
终于搞定数据库了,用了帝国备份的,太笨了,北山的这个试了好几次都没成功,不过还是谢谢了。
Beishan says:
August 24th, 2009 at 4:41 pm
@止戈
你是导入还是导出?用这个方法没有成功?是命令输入不正确吧?你用的是哪家的主机?