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();
}
?>