php備份資料庫
備份資料庫並下載到本地【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");//打開文件
echofread($file,filesize($tmpFile));
fclose($file);
exit;
?>
㈡ 如何使用PHP自動備份資料庫
使用mysqlmp函數
mysqlmp -u username -p dbname table1 table2 ... > BackupName.sql
dbname參數表示資料庫的名稱
table1和table2參數表示需要備份的表的名稱,為空則整個資料庫備份;
BackupName.sql參數表設計備份文件的名稱,文件名前面可以加上一個絕對路徑。通常將資料庫被分成一個後綴名為sql的文件。
備份資料庫的主要過程:
切換到對應的資料庫;
使用show create table tableName,獲得表結構,寫到文件中;
然後查詢所有的表數據,循環生成相對應sql語句,寫到文件中;
試運行生成的sql文件。
㈢ php mysql如何備份數據
我一般用二種方法:
1.SQL文件數據備份;
下載一個Navicat Premium,使用這個軟體,正確連接並訪問資料庫,
點中你想要備份的資料庫,按右鍵使用轉存SQL文件,就會出現你要備份的提示框,保存即可;
若要導進則用運行SQL文件,非常方便的導入單個數侍臘據庫的,但這種只適合於小數據量的數據鏈談孝庫(50萬條以下);
2.底層備份,但這種備份要求安裝是同一版本的mysql才適合,否則會出現未知錯誤;
直接找到mysql安裝目錄,找到data文件夾全部拷唄到你想備份的地方即可,還原就拷回來即可。適合大數據量的備份方法!
3.至於樓主硬要用PHP備份數據的話棚稿,你可以參考phpadmin和dedecms程序備份數據的方法,但這種執行效率很低的!
㈣ php,mysql資料庫備份和還原的最理想方式,類似phpadmin的代碼
一、備份資料庫並下載到本地【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();
}
?>
㈤ 知道了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寫一個類,備份所有的資料庫呢
主要是個mysql mp操作,將資料庫的數據完整導入到txt或者其他文件中就可以的,和php的類相關很小啊,就是函數和mysql操作寫對了就好
㈦ 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備份文件不存在,請檢查文件路徑是否正確!";
}
}
?>
㈧ phpcmsv9資料庫備份在哪
phpcms可以使用多備份進行資料庫備份
根據phpcms的運行環境,可以選擇web模式備份或者客戶端備份
虛擬主機環境可以選擇web模式備份。登陸多備份官網後進入多備份控制面板,如果是首次登陸會有備份環境選項,選擇保護伺服器
選擇web模式,然後選擇資料庫備份。如果非首次登陸直接選擇添加,然後選擇資料庫備份
選擇好以後添加資料庫參數,選擇備份頻率,創建任務即可。
如果是伺服器環境,首先進入多備份控制面板,首次登陸會有備份環境,然後選擇保護伺服器,下載對應的客戶端。如果非首次登陸,直接下載左下角的客戶端
下載好以後解壓,打開dbfen.exe,然後登陸多備份賬號,選擇資料庫備份,然後填入資料庫參數,選擇備份頻率,即可開始備份
㈨ 用PHP怎麼將MYSQL中的指定資料庫備份下來
下載phpmyadmin ,他是用php語言開發的管理mysql的工具,有導出、導入等功能,解壓復制一份到你的任意一個網站目錄下,通過目錄訪問就可以了,
當然你也可以使用帝國的資料庫備份工具,也很方便的,特別是對於資料庫備份這個功能,比phpmyadmin還強大 予學PHP培訓
㈩ php 代碼備份資料庫
<?php
/*
**************functiondb_bak()********************
*功能:備份指定的資料庫中的指定表
*輸入(按傳入參數解釋):$db_name要備份的資料庫,$tb_array要備份的表,數組形式的,如果不是數組,將備份整個庫。
$dir輸出備份文件的目錄,$filename備份文件名,$block_num指定分塊大小(指一條insert語句包含幾天數據)
*輸出:備份的數據表的sql語句文件,可用於還原
*/
functiondb_bak($mylink,$dbname,$tab_array="",$dir,$filename,$block_num=20){
mysql_select_db($dbname,$mylink)ordb_error(mysql_error());
is_array($tab_array)or$tab_array=db_showtb($mylink,$dbname,true);//如果$tab_array不是數組,則取得整個庫的表
if($dir){
if(!file_exists($dir)){
$flag=mkdir($dir);
if(!$flag)
return2;
}
}
//檢查數據表是否存在
foreach($tab_arrayas$tab)
笑凳db_e_tab($mylink,$dbname,$tab)ordb_error($tab."is頃扮notexist!");
$fp=fopen($dir.$filename,"w");
foreach($tab_arrayas$tab){
fputs($fp,"DROPTABLEIFEXISTS".$tab."; ");
$tabdef_array=mysql_fetch_array(mysql_query("SHOWCREATETABLE".$tab,$mylink));
fputs($fp,str_replace(" ","",$tabdef_array["CreateTable"])."; ");
fputs($fp,"LOCKTABLES".$tab."WRITE; ");
$getvalue_result=mysql_query("select*from".$tab,$mylink);
if(mysql_num_rows($getvalue_result)){
$i=1;
雀升灶$p="";
$start_flag=true;
while($getvalue_array=mysql_fetch_row($getvalue_result)){
$values=join("','",array_map('db_data_check',$getvalue_array));
$start_flag&&fputs($fp,"insertinto".$tab."values");
if($i>$block_num){
fputs($fp,",('".$values."'); ");
$start_flag=true;
$i=0;
}else{
fputs($fp,$p."('".$values."')");
$start_flag=false;
$i++;
}
$p=$start_flag?"":",";
}
$start_flagorfputs($fp,"; ");
}
fputs($fp,"UNLOCKTABLES; ");
}
fclose($fp);
}
/*
**************functiondb_in()********************
*功能:還原備份函數db_bak生成的資料庫文件
*輸入(按傳入參數解釋):$db_name要備份的資料庫,$filename要還原的資料庫文件
*輸出:將數據還原到資料庫
*原理:將文件分割成一個數組,然後逐條將數據導入資料庫
*警告:執行該函數會刪除原來的數據表
*/
functiondb_in($mylink,$dbname,$filename){
if(!file_exists($filename)){
return0;
}
db_e_db($mylink,$dbname)or(mysql_query("createdatabase".$dbname,$mylink)ordb_error(mysql_error()));
mysql_select_db($dbname,$mylink);
$sql_array=file($filename);
foreach($sql_arrayas$sql){
mysql_query(trim($sql),$mylink)ordb_error(mysql_error());
}
}
?>
//我自己寫的。可以參考哈