日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

11.MYSQL高级(一)

發(fā)布時間:2024/7/5 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 11.MYSQL高级(一) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.賬戶管理

在生產(chǎn)環(huán)境下操作數(shù)據(jù)庫時,絕對不可以使用root賬戶連接,而是創(chuàng)建特定的賬戶,授予這個賬戶特定的操作權(quán)限,然后連接進(jìn)行操作,主要的操作就是數(shù)據(jù)的crud

MySQL賬戶體系:根據(jù)賬戶所具有的權(quán)限的不同,MySQL的賬戶可以分為以下幾種

服務(wù)實例級賬號:,啟動了一個mysqld,即為一個數(shù)據(jù)庫實例;如果某用戶如root,擁有服務(wù)實例級分配的權(quán)限,那么該賬號就可以刪除所有的數(shù)據(jù)庫、連同這些庫中的表

數(shù)據(jù)庫級別賬號:對特定數(shù)據(jù)庫執(zhí)行增刪改查的所有操作

數(shù)據(jù)表級別賬號:對特定表執(zhí)行增刪改查等所有操作

字段級別的權(quán)限:對某些表的特定字段進(jìn)行操作

存儲程序級別的賬號:對存儲程序進(jìn)行增刪改查的操作

賬戶的操作主要包括創(chuàng)建賬戶、刪除賬戶、修改密碼、授權(quán)權(quán)限等

注意:進(jìn)行賬戶操作時,需要使用root賬戶登錄,這個賬戶擁有最高的實例級權(quán)限

?

查看所有用戶

查看user表的結(jié)構(gòu)desc user\G;

主要字段說明:

host表示允許訪問的主機

user表示用戶名

authentication_string表示密碼,為加密后的值

?

查看所有用戶

selecthost,user,authentication_string from user;

創(chuàng)建賬戶并授予權(quán)限

需要使用實例級賬戶登錄后操作,以root為例

常用權(quán)限主要包括:create、alter、drop、insert、update、delete、select

如果分配所有權(quán)限,可以使用all privileges

?

創(chuàng)建賬戶并授權(quán)

語法如下:grant 權(quán)限列表 on 數(shù)據(jù)庫 to '用戶名'@'訪問主機' identified by '密碼';

授權(quán)

語法如下:grant 權(quán)限名稱 on 數(shù)據(jù)庫 to 賬戶1,賬戶2,... with grant option;

示例

step1:使用root登錄

mysql -uroot-p
回車后寫密碼,然后回車

step2:創(chuàng)建賬戶并授予所有權(quán)限,說明如下用戶名為py,密碼為123

操作python數(shù)據(jù)庫的所有對象python.*

訪問主機通常使用百分號%表示此賬戶可以使用任何ip的主機登錄訪問此數(shù)據(jù)庫

訪問主機可以設(shè)置成localhost或具體的ip,表示只允許本機或特定主機訪問

grant all privileges onpython.* to 'py'@'%' identified by '123';

查看用戶有哪些權(quán)限

show grants for py;

step3:退出root的登錄

quit

step4:使用py賬戶登錄

mysql -upy -p
回車后寫密碼,然后回車

?

回收權(quán)限

需要使用實例級賬戶登錄后操作,以root為例

如果不希望某用戶擁有此權(quán)限,可以將此權(quán)限從用戶上撤銷

語法如下:revoke 權(quán)限列表 on 數(shù)據(jù)庫名.* from? '用戶名'@'主機';

?

修改密碼

語法1:不需登錄mysqladmin-u py -p password '新密碼'
例:mysqladmin -u py -p password '123456'
回車后寫密碼,然后回車

?

語法2:使用root登錄,修改mysql數(shù)據(jù)庫的user表

使用password()函數(shù)進(jìn)行密碼加密

注意修改完成后需要刷新權(quán)限

update userset authentication_string=password('新密碼') where user='用戶名';
例:update user set authentication_string=password('123') where user='py';

刷新權(quán)限:flushprivileges

語法1用于賬戶自己修改密碼

語法2用于修改自己或其它賬戶的密碼,一般是dba或經(jīng)理修改員工的密碼

?

刪除賬戶

語法1:使用root登錄dropuser '用戶名'@'主機';
例:drop user 'py'@'%';

語法2:使用root登錄,刪除mysql數(shù)據(jù)庫的user表中數(shù)據(jù)

deletefrom user where user='用戶名';
例:delete from user where user='py';

--操作結(jié)束之后需要刷新權(quán)限flushprivileges

推薦使用語法1刪除用戶

如果主機的字母大寫時,使用語法1刪除失敗,采用語法2方式

?

2.函數(shù)創(chuàng)建

語法如下

delimiter$$
create function 函數(shù)名稱(參數(shù)列表) returns返回類型
begin
sql語句
end
$$
delimiter ;

  • 說明:delimiter用于設(shè)置分割符,默認(rèn)為分號
  • 在“sql語句”部分編寫的語句需要以分號結(jié)尾,此時回車會直接執(zhí)行,所以要創(chuàng)建存儲過程前需要指定其它符號作為分割符,此處使用//,也可以使用其它字符

?

查看python數(shù)據(jù)庫中的函數(shù)

select name,type from mysql.procwhere db='python';

?

調(diào)用語法如下:select 函數(shù)名稱(參數(shù)列表);

刪除函數(shù)語法如下:dropfunction 函數(shù)名稱;

?

臨時變量聲明臨時變量,只能在 begin ... end 體重語法如下

declare變量名 類型 default 默認(rèn)值;
例:declare x varchar(100);

設(shè)置變量值,語法如下

set 變量名=;
例:set x='abc';

?

用戶變量/會話變量

只有在當(dāng)前連接用戶有效,其他連接用戶無法訪問

使用@標(biāo)識聲明用戶變量

使用 select 來查看用戶變量

?

?

系統(tǒng)變量

任何一個用戶都可以訪問

使用 @@來標(biāo)識系統(tǒng)變量

使用 select 來查看系統(tǒng)變量

?

函數(shù)判斷

語法如下

if 條件1 then
語句1;
elseif 條件2 then
語句2;
else
語句
end if;

?

循環(huán)

語法如下

while 條件do
語句;
end while;

退出循環(huán):leave,相當(dāng)于break

退出本次循環(huán):iterate,相當(dāng)于continue

?

3.存儲過程創(chuàng)建

語法如下

delimiter//
create procedure存儲過程名稱(參數(shù)列表)
begin
sql語句
end
//
delimiter ;

說明:delimiter用于設(shè)置分割符,默認(rèn)為分號

在“sql語句”部分編寫的語句需要以分號結(jié)尾,此時回車會直接執(zhí)行,所以要創(chuàng)建存儲過程前需要指定其它符號作為分割符,此處使用//,也可以使用其它字符

?

查看表結(jié)構(gòu)descmysql.proc\G;

查看python數(shù)據(jù)庫的所有存儲過程

select name,type,body from mysql.procwhere db='python';

?

調(diào)用語法如下:call 存儲過程(參數(shù)列表);

刪除語法如下:drop procedure 存儲過程名稱;

?

存儲過程和函數(shù)的區(qū)別

相同點

1.存儲過程和函數(shù)都是為了可重復(fù)的執(zhí)行操作數(shù)據(jù)庫的 sql 語句的集合.

2.存儲過程和函數(shù)都是一次編譯,就會被緩存起來,下次使用就直接命中緩存中已經(jīng)編譯好的sql, 不需要重復(fù)編譯

3.減少網(wǎng)絡(luò)交互,減少網(wǎng)絡(luò)訪問流量

不同點

1.標(biāo)識符不同,函數(shù)的標(biāo)識符是 function, 過程:procedure

2.函數(shù)中有返回值,且必須有返回值,而過程沒有返回值,但是可以通過設(shè)置參數(shù)類型(in,out)來實現(xiàn)多個參數(shù)或者返回值

3.函數(shù)使用 select 調(diào)用,存儲過程需要使用 call 調(diào)用

4.select 語句可以在存儲過中調(diào)用,但是除了 select ... into 之外的 select 語句都不能再函數(shù)中調(diào)用

5.通過 in out 參數(shù),過程相關(guān)函數(shù)更加靈活,可以返回多個結(jié)果

6.在實際開發(fā)中根據(jù)個人喜好選擇使用函數(shù)或者存儲過程

總結(jié)

以上是生活随笔為你收集整理的11.MYSQL高级(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。