1. 如何實現php自動創建資料庫
你做好程序以後,把資料庫導出成sql文件
1、連接資料庫
2、讀取這個sql文件里的sql語句,並執行
3、生成一個資料庫連接參數的php文件
<?php
$con=mysql_connect("localhost","peter","abc123");
if(!$con)
{
die('Couldnotconnect:'.mysql_error());
}
if(mysql_query("CREATEDATABASEmy_db",$con))
{
echo"Databasecreated";
}
else
{
echo"Errorcreatingdatabase:".mysql_error();
}
mysql_close($con);
?>
<?php
classReadSql{
//資料庫連接
protected$connect=null;
//資料庫對象
protected$db=null;
//sql文件
public$sqlFile="";
//sql語句集
public$sqlArr=array();
publicfunction__construct($host,$user,$pw,$db_name){
$host=empty($host)?C("DB_HOST"):$host;
$user=empty($user)?C("DB_USER"):$user;
$pw=empty($pw)?C("DB_PWD"):$pw;
$db_name=empty($db_name)?C("DB_NAME"):$db_name;
//連接資料庫
$this->connect=mysql_connect($host,$user,$pw)ordie("Couldnotconnect:".mysql_error());
$this->db=mysql_select_db($db_name,$this->connect)ordie("Yoncannotselectthetable:".mysql_error());
}
//導入sql文件
publicfunctionImport($url){
$this->sqlFile=file_get_contents($url);
if(!$this->sqlFile){
exit("打開文件錯誤");
}else{
$this->GetSqlArr();
if($this->Runsql()){
returntrue;
}
}
}
//獲取sql語句數組
publicfunctionGetSqlArr(){
//去除注釋
$str=$this->sqlFile;
$str=preg_replace('/--.*/i','',$str);
$str=preg_replace('//*.**/(;)?/i','',$str);
//去除空格創建數組
$str=explode("; ",$str);
foreach($stras$v){
$v=trim($v);
if(empty($v)){
continue;
}else{
$this->sqlArr[]=$v;
}
}
}
//執行sql文件
publicfunctionRunSql(){
foreach($this->sqlArras$k=>$v){
if(!mysql_query($v)){
exit("sql語句錯誤:第".$k."行".mysql_error());
}
}
returntrue;
}
}
//範例:
header("Content-type:text/html;charset=utf-8");
$sql=newReadSql("localhost","root","","log_db");
$rst=$sql->Import("./log_db.sql");
if($rst){
echo"Success!";
}
?>
2. php mysql怎麼創建資料庫圖解
在一個伺服器上一般來講都不止一個站點,更不止一個MySQL(和PHP搭配之最佳組合)資料庫。
為了防止安全隱患,我們一般針對每個資料庫都設置了獨立的資料庫訪問帳號,該帳號僅有訪問該資料庫的許可權。下面就讓我們來具體演示一下:
1、首先我們要登陸php(做為現在的主流開發語言)MyAdmin,不做演示。
4、在主界面的右邊點擊「許可權」來創建資料庫帳號。
5、在許可權頁面中,我們點擊「添加新用戶」
6、在該頁面中,我們填寫要創建的資料庫用戶名,該用戶的訪問范圍,及密碼。
如上圖,我們填寫了用戶名為:cncmsuser,該資料庫用戶只允許本機訪問,主機一項選擇本地;密碼我們使用自動生成的,點下面的「Generate」會生成一個隨機密碼,然後點「Copy」會自動填寫到密碼框中。
下面的框都不選,直接拉到頁面最下面點執行即可創建一個新用戶。
資料庫用戶創建成功,會返回如下頁面:
7、最重要的一步,設置該用戶的資料庫訪問許可權
在資料庫用戶添加成功返回的頁面中可以直接設置許可權。這里我們選擇按資料庫指定許可權:
如上圖,在資料庫列表中選擇我們剛剛創建的cncmstest,即會自動進入該資料庫的許可權設置頁面。
在上圖的許可權設置中,我們把「數據」、「結構」兩列的許可權全部選中,管理許可權都不要選。點執行即可。
到這里,我們已經全部設置完畢了,創建了一個資料庫:cncmstest,並創建了資料庫用戶cncmsuser,特別指定了該用戶只對cncmstest的訪問許可權。如此,便達到了我們一開始所講的目的:為每一個資料庫指定獨立的用戶訪問許可權。
3. php手把手教你做網站(二十九)thinkphp6部署多個資料庫
前邊介紹了負載均衡,mysql同步,接下來介紹tp6分布式部署多個資料庫,實現讀寫分離。
tp6的分布式部署讀和寫仍然是一個系統,這里我們分開操作,給用戶展示的就是從資料庫,後端添加文章就是主庫,然後同步到從庫。
1、配置資料庫鏈接參數
目標:實現隨機使用資料庫展示信息,只是讀操作。
測試:前台可以讀取表中內容(存放的不一致),查看是否是隨機顯示的。
打開.env文件進行編輯
說明:
2、編輯database.php
找到deploy設置為1分布式部署,下邊不要改,都是讀,寫入的也就是後端的我們單獨建站連接主庫。
配置完成,tp6使用的是mt_rand取隨機數判斷使用哪個資料庫。
3、資料庫交互寫操作
比如瀏覽量沒必要每次都去更新資料庫,可以先使用redis緩存,存夠1000的整數倍,再去更新資料庫。
4、後台獨立,也就是寫
可以前後端分離,單獨做一個網站(沒有前端)使用ip訪問或者獨立的域名連接後台。
5、上傳附件(jquery ajax跨域上傳)
使用了nginx負載均衡,肯定是多個一樣的網站,如果圖片存放到一個站,別的就不能訪問了,可以單獨設置一個附件(壓縮包,圖片等)伺服器,可以使用二級域名連接,這就要求我們上傳附件的時候,是上傳到附件伺服器。
jqueryURL
API控制器apdpic方法
說明:
也可以先傳到後台伺服器然後使用(php)ftp上傳,或者是通過curl上傳到附件伺服器,感覺那樣畢竟麻煩,直接設置跨域會比較簡單。
也測試了使用jsonp跨域,但是不能上傳附件。
6、thinkphp6實現讀寫分離(在一個站點)
我個人是不喜歡這樣的,負載均衡應該是均衡地讀,也就是前台單獨一個站點,後端的寫是另一個獨立的站點,看個人喜好吧。
獨立後台的優點:可以提升安全性,因為我們的後台網址是不公開的,避免用戶猜測一些後台的信息。
.env配置按照1所述編輯,默認第一個是主庫。
database.php
願大家在新的一年心想事成,萬事如意!!!