本文目錄一覽:
- 1、怎麼用mysql工具連接資料庫
- 2、如何允許外網可以連接mysql資料庫
- 3、如何把mysql設置成網路資料庫,即遠程訪問mysql
- 4、怎麼用mysql處理這樣的問題?
- 5、連接mysql是非同步的嗎
- 6、ajax怎麼非同步讀取mysql資料庫的欄位內容?
怎麼用mysql工具連接資料庫
可以使用mysql推出的mysqlconnector/net組件,該組件是mysql為ado.net訪問mysql資料庫設計的.net專用訪問組件,完成該組件後,需要在項目中引用這個組件,之後在程序中引用命名空間mysql.data.mysqlclient,即可開始進行連接mysql資料庫的操作了,示例如下:
protected
voidmysqlcon()
{
//資料庫連接字元串跟連接sqlserver沒有區別
string
constr
=
“server=localhost;userid=root;password=root;database=test”;
//下面使用mysql
connector/net提供的專用對象
mysqlconnection
mycon
=
new
mysqlconnection(constr);
mycon.open();
mysqlcommandmycmd
=
new
mysqlcommand(“select
*
from
users”,
mycon);
mysqldatareader
myreader
=
mycmd.executereader();
while
(myreader.read())
{
if
(myreader.hasrows)
{
messagebox.show(myreader.getstring(“email”)
);
}
}
myreader.close();
mycon.close();
如何允許外網可以連接mysql資料庫
設置mysql服務允許外網訪問,修改mysql的配置文件,有的是my.ini,有的是my.cnf【linux】.
1:設置mysql的配置文件
/etc/mysql/my.cnf
找到 bind-address =127.0.0.1 將其注釋掉;//作用是使得不再只允許本地訪問;
重啟mysql:/etc/init.d/mysql restart;
2:登錄mysql資料庫:mysql -u root -p
mysql use mysql;
查詢host值:
mysql select user,host from user;
如果沒有”%”這個host值,就執行下面這兩句:
mysql update user set host=’%’ where user=’root’;
mysql flush privileges;
或者也可以執行:
mysqlgrand all privileges on *.* to root@’%’ identifies by ‘ xxxx’;
其中 第一個*表示資料庫名;第二個*表示該資料庫的表名;如果像上面那樣 *.*的話表示所有到資料庫下到所有表都允許訪問;
『%’:表示允許訪問到mysql的ip地址;當然你也可以配置為具體到ip名稱;%表示所有ip均可以訪問;
後面到『xxxx’為root 用戶的password;
舉例:
任意主機以用戶root和密碼mypwd連接到mysql伺服器
mysql GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%’ IDENTIFIED BY ‘mypwd’ WITH GRANT OPTION;
mysql flush privileges;
IP為192.168.1.102的主機以用戶myuser和密碼mypwd連接到mysql伺服器
mysql GRANT ALL PRIVILEGES ON *.* TO ‘myuser’@’192.168.1.102’ IDENTIFIED BY ‘mypwd’ WITH GRANT OPTION;
mysql flush privileges;
如何把mysql設置成網路資料庫,即遠程訪問mysql
第一種方法:直接輸入賬戶名和密碼進入資料庫。找到mysql資料庫的user表,直接update root用戶的Host,將Host:localhost, user:root改成Host:%, user:root
然後 mysql flush privileges; (運行此句才生效,或者重啟MySQL)。因為mysql的許可權都在cache里,所以要刷新一下。
改成%後,任意IP都可訪問mysql伺服器,十分不安全。可以將%將換成一個IP地址,即只允許來自該IP地址的訪問。
第二種方法:直接輸入賬戶名和密碼進入資料庫。
mysqlGRANT ALL PRIVILEGES ON *.* TO ‘root’@’%’ IDENTIFIED BY ‘youpassword’ WITH GRANT OPTION;
mysql flush privileges;
可以將%將換成一個IP地址,即只允許來自該IP地址的訪問。
root用戶許可權過大,建議新建用戶,賦予其對某個資料庫的部分許可權
怎麼用mysql處理這樣的問題?
通常情況下在PHP中MySQL查詢是串列的,如果能實現MySQL查詢的非同步化,就能實現多條SQL語句同時執行,這樣就能大大地縮短MySQL查詢的耗時,提高資料庫查詢的效率。目前MySQL的非同步查詢只在MySQLi擴展提供,查詢方法分別是:
1、使用MYSQLI_ASYNC模式執行mysqli::query
2、獲取非同步查詢結果:mysqli::reap_async_query
使用mysql非同步查詢,需要使用mysqlnd作為PHP的MySQL資料庫驅動。
使用MySQL非同步查詢,因為需要給所有查詢都創建一個新的連接,而MySQL服務端會為每個連接創建一個單獨的線程進行處理,如果創建的線程過多,則會造成線程切換引起系統負載過高。Swoole中的非同步MySQL其原理是通過MYSQLI_ASYNC模式查詢,然後獲取mysql連接的socket,加入到epoll事件循環中,當資料庫返回結果時會回調指定函數,這個過程是完全非同步非阻塞的。
連接mysql是非同步的嗎
idle_pool是空閑的資料庫連接,當有SQL請求時從idle_pool中移到busy_pool中。
當數 據庫返回結果後從busy_pool中再移到idle_pool中,以供新的請求使用。
當SQL請求到達時如果沒有空閑的資料庫連接,那會自動加入到 wait_queue中。
一旦有SQL完成操作,將自動從wait_queue中取出等待的請求進行處理。
ajax怎麼非同步讀取mysql資料庫的欄位內容?
jQuery.ajax({
url: ‘%=basePath%XXXXX.action’, // 提交的頁面
data: {msg_id:+id}, // 有要傳遞的數據就傳遞,沒有就空著
type: “POST”,//傳遞方式
success: function(data) {
//action返回結果,頁面顯示
}
});
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/206080.html