php的备份
备份数据库的数据就可以了。
备份的方法:
1、本地备份-适用于独立主机或VPS:使用本机程序对网站文件及数据库进行备份。
2、异地备份-适用于虚拟主机/空间:使用FTP程序将文件下载回本机备份,数据库使用本机的数据库管理程序进行远程备份。
备份的类型:
1、完整备份-所整个网站的文件都备份一次。优点:可以把整个网站都完整备份一次。缺点:费时费资源。
2、差异备份-只备份有改变的文件。优点:每次只把有改变过的文件备份下来。相同的文件就不会再备份一次了,省时省力。
❷ 知道了php数据库账号密码怎么备份
z-blog php数据库帐号密码保存在zb_users/c_option.php
php一般使用的mysql的数据库 如果没有密码的话 比较麻烦
要破解mysql的root密码 这是关键
参考:
如果是root密码:
方法一:
MySQL提供跳过访问控制的命令行参数,通过在命令行以此命令启动MySQL服务器:
safe_mysqld --skip-grant-tables&
即可跳过MySQL的访问控制,任何人都可以在控制台以管理员的身份进入MySQL数据库。
需要注意的是在修改完密码以后要把MySQL服务器停掉重新启动才会生效
方法二:
可以进行如下的步骤重新设置MySQL的root密码:
1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库。
因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的
状态下,其他的用户也可以任意地登录和修改MySQL的信息。可以采用将MySQL对
外的端口封闭,并且停止Apache以及所有的用户进程的方法实现服务器的准安全
状态。最安全的状态是到服务器的Console上面操作,并且拔掉网线。
2.修改MySQL的登录设置:
# vi /etc/my.cnf
在[mysqld]的段中加上一句:skip-grant-tables
例如:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
skip-name-resolve
skip-grant-tables
保存并且退出vi。
3.重新启动mysqld
# /etc/init.d/mysqld restart
Stopping MySQL: [ OK ]
Starting MySQL: [ OK ]
4.登录并修改MySQL的root密码
# /usr/bin/mysql
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 3 to server version: 3.23.56
Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the buffer.
mysql> USE mysql ;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> UPDATE user SET Password = password ( ‘new-password’ ) WHERE User = ‘root’ ;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 2 Changed: 0 Warnings: 0
mysql> flush privileges ;
Query OK, 0 rows affected (0.01 sec)
mysql> quit
Bye
5.将MySQL的登录设置修改回来
# vi /etc/my.cnf
将刚才在[mysqld]的段中加上的skip-grant-tables删除
保存并且退出vi。
6.重新启动mysqld
# /etc/init.d/mysqld restart
Stopping MySQL: [ OK ]
Starting MySQL: [ OK ]
windows
1.以系统管理员身份登陆系统。
2.打开cmd—–net start 查看mysql是否启动。启动的话就停止net stop mysql.
3.我的mysql安装在d:usrlocalmysql4in下。
4.跳过权限检查启动mysql.
d:usrlocalmysql4inmysqld-nt –skip-grant-tables
5.重新打开cmd。进到d:usrlocalmysql4in下:
d:usrlocalmysql4inmysqladmin -uroot flush-privileges password “newpassword”
d:usrlocalmysql4inmysqladmin -u root -p shutdown 这句提示你重新输密码。
6.在cmd里net start mysql
7.搞定了。
2,MySQL4.1以上版本一种密码错误问题的解决方法
1 # SET PASSWORD FOR ’some_user’@’some_host’ = OLD_PASSWORD(‘newpwd’);
2 # FLUSH PRIVILEGES;
3,Mysql数据库修复
myisamchk -r -q d:mysqldatalatin1*
r代表修复
q代表快速
d:mysqldatalatin1*数据库里面 *代表里面的所有的文件
方法三:
如果你忘记了你的MYSQL的root口令的话,你可以通过下面的过程恢复。
1. 向mysqld server 发送kill命令关掉mysqld server(不是 kill -9),存放进程ID的文件通常在MYSQL的数据库所在的目录中。
kill `cat /mysql-data-directory/hostname.pid`
你必须是UNIX的root用户或者是你所运行的SERVER上的同等用户,才能执行这个操作。
2. 使用`--skip-grant-tables' 参数来启动 mysqld。
3. 使用`mysql -h hostname mysql'命令登录到mysqld server ,用grant命令改变口令。你也可以这样做:`mysqladmin -h hostname -u user password 'new password''。
(其实也可以用use mysql; update user set password =password('yourpass') where user='root' 来做到。)
4. 载入权限表: `mysqladmin -h hostname flush-privileges' ,或者使用 SQL 命令`FLUSH PRIVILEGES'。(当然,在这里,你也可以重启mysqld。)
方法四:(一定要先备份)
1,重新在另一台电脑上安装相同版本的MySQL
2,删除忘记密码的电脑中MySQL安装目录中datamysql的全部内容(要先停止MySQL服务)
3,Copy新装的电脑上MySQL安装目录中datamysql的全部内容 to 刚刚删除的目录中
4,启动MySQL服务
这样就只有一个root用户了,密码为空……
❸ php数据库备份还原失败~
php简单备份与还原MySql的方法具体如下:
一、备份:
<?php
header("content-Type:text/html;charset=utf-8");
//备份数据库
$host="localhost";
$user="root";//数据库账号
$password="123456";//数据库密码
$dbname="test";//数据库名称
//这里的账号、密码、名称都是从页面传过来的
if(!mysql_connect($host,$user,$password))//连接mysql数据库
{
echo'数据库连接失肢族迹败,请核对后再试';
exit;
}
if(!mysql_select_db($dbname))//是否存在该数据库
{
echo'不存在数据库:'.$dbname.',请核对后再试';
exit;
}
mysql_query("setnames'utf8'");
$mysql="setcharsetutf8; ";
$q1=mysql_query("showtables");
while($t=mysql_fetch_array($q1)){
$table=$t[0];
$q2=mysql_query("showcreatetable`$table`");
$sql=mysql_fetch_array($q2);
$mysql.=$sql['CreateTable']."; ";
$q3=mysql_query("select*from`$table`");
while($data=mysql_fetch_assoc($q3)){
$keys=array_keys($data);
$keys=array_map('addslashes',$keys);
$keys=join('`,`',$keys);
$keys="`".$keys."`";
$vals=array_values($data);
$vals=array_map('addslashes',$vals);
历并$vals=join("','",$vals);
$vals="'".$vals."'";
$mysql.="insertinto`$table`($keys)values($vals); ";
}
}
$filename="data/".$dbname.date('Ymjgi').".sql";//存放路径,默认存放到项目最外层
$fp=fopen($filename,'w');
fputs($fp,$mysql);
fclose($fp);
echo"数据备份成功";
?>
二、还原
<!--
author:果冻
qq:52091199
blog:http://wyg517.blog.163.com
-->
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
<?php
$filename="test20101216923.sql";
$host="localhost";//主机名
$user="root";//MYSQL用户名
$password="123456";//密码
$dbname="穗氏test";//在此指定您要恢复的数据库名,不存在则必须先创建,请自已修改数据库名
mysql_connect($host,$user,$password);
mysql_select_db($dbname);
$mysql_file="data/".$filename;//指定要恢复的MySQL备份文件路径,请自已修改此路径
restore($mysql_file);//执行MySQL恢复命令
functionrestore($fname)
{
if(file_exists($fname)){
$sql_value="";
$cg=0;
$sb=0;
$sqls=file($fname);
foreach($sqlsas$sql)
{
$sql_value.=$sql;
}
$a=explode("; ",$sql_value);//根据"; "条件对数据库中分条执行
$total=count($a)-1;
mysql_query("setnames'utf8'");
for($i=0;$i<$total;$i++)
{
mysql_query("setnames'utf8'");
//执行命令
if(mysql_query($a[$i]))
{
$cg+=1;
}
else
{
$sb+=1;
$sb_command[$sb]=$a[$i];
}
}
echo"操作完毕,共处理$total条命令,成功$cg条,失败$sb条";
//显示错误信息
if($sb>0)
{
echo"<hr><br><br>失败命令如下:<br>";
for($ii=1;$ii<=$sb;$ii++)
{
echo"<p><b>第".$ii."条命令(内容如下):</b><br>".$sb_command[$ii]."</p><br>";
}
}//-----------------------------------------------------------
}else{
echo"MySQL备份文件不存在,请检查文件路径是否正确!";
}
}
?>
❹ 如何用PHP来实现 备份 mysql 数据库的 功能 就是鼠标单击 让此项目的数据库自动保存到相应的文件夹
我想到的有三种思路吧
1.如果服务器允许mysqlmp 并且没有禁止PHP的shell_exec()这个函数的话
直接在PHP里面执行mysqlmp就可以了。
2.通过mysql_query('show tables')的返回值遍历每个表,循环对每个表使用查询语句
select * into outfile '路径/文件名' from 表名
缺点是这样得到的是纯数据,恢复数据的时候你需要额外再写脚本
3.同样通过show tables返回表名,遍历每个表,通过select 语句查询,然后逐条结果处理,比如手工添加drop table 和create table 以及insert into等等,然后再写入文件。这样得到的备份数据是比较接近mysqlmp的结果的,各种工具都可以用来恢复数据。缺点是如果数据库太大的话,效率不好说
总之我不推荐用PHP来实现mysql数据的备份,如果可能的话还是用mysqlmp吧
❺ php备份恢复MYSQL数据库
1、把数据库sql文件查找 CHARACTER
替换成 CHARACTER SET utf8 或 CHARACTER = utf8
2、到phpmyadmin 创建一个新的数据库的时候应该选 整理 latin1_swedish_ci
3、到phpmyadmin 进入新建的数据库,导入数据库文件
4、用UltraEdit转换所有ANSI格式的php源码文件为UTF-8格式:File --> Conversions --> ASCII to UTF-8
5、在php源码文件中必须加入:
在<head>后加入
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
6、在连接数据DB的文件中找到类似一下代码
$host="localhost"; $DBname="aa"; //数据库名字$user= "root"; //用户名$passwd = ""; //密码$link = mysql_connect($host,$user,$passwd) or die ("Fail");
$db = mysql_select_db($DBname, $link) or die ("Fail"); //连接
// 要在真正query DB取出资料前,必须加入下面3行mysql_query才可以:
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER_SET_CLIENT=utf8");
mysql_query("SET CHARACTER_SET_RESULTS=utf8");
7、在php源码中, 如有应用htmlentities和htmlspecialchars时需要注意:
要似如下格式:
$chars = htmlentities($chars,ENT_QUOTES,"UTF-8");
$chars = htmlspecialchars($chars,ENT_QUOTES,"UTF-8");
如有应用addslashes()或mysql_real_escape_string()记得用以下:
$chars = stripslashes($chars);
另外如果需要的话还可设置:
1、php.ini 设定php中的语系为 (记得restart)
default_charset = "utf-8"
2、my.ini 设定MySQL中的语系为 (记得restart)
[mysqld]
init_connect='SET NAMES utf8'
default-character-set=utf8
[client]
default-character-set = utf8
本人刚接触PHP+MySQL,才疏学浅,希望能给有需要的得到帮助。
请大家指点,谢谢!
❻ 求thinkphp 数据库的备份、还原的脚本
一、备份数据库并下载到本地【db_backup.php】
代码代码如下:
<?php
// 设置SQL文件保存文件名
$filename=date("Y-m-d_H-i-s")."-".$cfg_dbname.".sql";
// 所保存的文件名
header("Content-disposition:filename=".$filename);
header("Content-type:application/octetstream");
header("Pragma:no-cache");
header("Expires:0");
// 获取当前页面文件路径,SQL文件就导出到此文件夹内
$tmpFile = (dirname(__FILE__))."\\".$filename;
// 用MySQLDump命令导出数据库
exec("mysqlmp -u$cfg_dbuser -p$cfg_dbpwd --default-character-set=utf8 $cfg_dbname > ".$tmpFile);
$file = fopen($tmpFile, "r"); // 打开文件
echo fread($file,filesize($tmpFile));
fclose($file);
exit;
?>
二、还原数据库【db_restore.php】
代码代码如下:
<form id="form1" name="form1" method="post" action="">
【数据库SQL文件】:<input id="sqlFile" name="sqlFile" type="file" />
<input id="submit" name="submit" type="submit" value="还原" />
</form>
<?php
// 我的数据库信息都存放到config.php文件中,所以加载此文件,如果你的不是存放到该文件中,注释此行即可;
require_once((dirname(__FILE__).'/../../include/config.php'));
if ( isset ( $_POST['sqlFile'] ) )
{
$file_name = $_POST['sqlFile']; //要导入的SQL文件名
$dbhost = $cfg_dbhost; //数据库主机名
$dbuser = $cfg_dbuser; //数据库用户名
$dbpass = $cfg_dbpwd; //数据库密码
$dbname = $cfg_dbname; //数据库名
set_time_limit(0); //设置超时时间为0,表示一直执行。当php在safe mode模式下无效,此时可能会导致导入超时,此时需要分段导入
$fp = @fopen($file_name, "r") or die("不能打开SQL文件 $file_name");//打开文件
mysql_connect($dbhost, $dbuser, $dbpass) or die("不能连接数据库 $dbhost");//连接数据库
mysql_select_db($dbname) or die ("不能打开数据库 $dbname");//打开数据库
echo "<p>正在清空数据库,请稍等....<br>";
$result = mysql_query("SHOW tables");
while ($currow=mysql_fetch_array($result))
{
mysql_query("drop TABLE IF EXISTS $currow[0]");
echo "清空数据表【".$currow[0]."】成功!<br>";
}
echo "<br>恭喜你清理MYSQL成功<br>";
echo "正在执行导入数据库操作<br>";
// 导入数据库的MySQL命令
exec("mysql -u$cfg_dbuser -p$cfg_dbpwd $cfg_dbname < ".$file_name);
echo "<br>导入完成!";
mysql_close();
}
?>