mysql 使用者管理 pymysql模組

2022-08-02 07:21:12 字數 3178 閱讀 1485

mysql使用者管理:

mysql是乙個tcp伺服器用於操作伺服器上的檔案資料

在mysql自帶的mysql資料庫中有4個表用於使用者管理的

分別是:優先順序從高到低

user -> db -> tables_priv -> columns_priv

1.建立使用者的語句

create user 使用者名稱@「主機位址」 identified by 「密碼」;

create user 使用者名稱@'192.168.1.%' identified by '123';

create user 使用者名稱@'%' identified by '123';

create user db1@「127.0.0.1」 identified by 「123」;

這裡的主機位址不是伺服器位址而是表示這個賬戶可以在哪台電腦上登陸 %表示所有都可以登入

2.授權的語句:對資料夾,對檔案,對檔案某一字段的許可權

常用許可權:select update delete alter

all 可以代表除了 geant 之外的所有許可權

語法:grant [許可權的名稱 select insert delete ......|all] on 資料庫.表名 to 使用者名稱@主機位址;

grant all on *.* to db1@'localhost'; 可以訪問所有庫和表

grant all on test.* to db1@'localhost'; 可以訪問test庫的所有表

grant all on test.table1 to db1@'localhost';可以訪問test庫的table1表

grant select(id,name),insert(id,name) on test.table1 to db1@'localhost'; 僅能檢視和新增 test庫的table1表中的id和name欄位

grant [許可權的名稱 select insert.... | all ] on 資料庫.表名 to 使用者名稱@主機位址 with grant option;

with grant option 這個使用者可以將他有的許可權授予給別的使用者

特點:如果授權時使用者不存在直接自動建立使用者,這是grant的特點

3.刪除許可權

revoke 許可權的名稱 on 資料庫.表名 from 使用者名稱@"主機

pymysql使用步驟

核心類connect鏈結和cursor讀寫

1.與資料庫伺服器建立鏈結

2.獲取游標物件(用於傳送和接受資料)

3.用游標執行sql語句

4.使用fetch方法來獲取執行的結果

5.關閉鏈結,先關游標,再關鏈結

游標的常用方法

1.建立游標 conn.cursor(指定查詢結果的資料型別)

2.excute 執行sql語句

3.fetchone(當sql只有一條記錄時)

fetchmany(sql有多條並且需要指定條數)

fetchall (多條)

4.scroll 用於修改游標的當前位置

pymysql預設不提交修改(指的是對於表中的記錄操作不提交) 刪庫 刪表 是無法撤銷的

import pymysql

conn = pymysql.connect(

host="127.0.0.1", #鏈結

user="root", #使用者

password="123", #密碼

database="home", #資料庫名稱

port=3306, #埠號 可選

charset="utf8" #編碼 可選

)#獲取游標物件 pymysql.cursors.dictcursor指定返回結果為字典 預設為元組型別

cursor=conn.cursor(pymysql.cursors.dictcursor)

#查詢資料

sql="select * from student"

#執行sql語句

#如果是select 語句返回的是查詢的條數

res=cursor.execute(sql)

print(res)

#獲取查詢的結果

print(cursor.fetchall()) #獲取所有

print(cursor.fetchmany(2)) # 括號內指定獲取多少個值就獲取多少個 不填寫預設乙個

print(cursor.fetchmany(2)) # 第二次基於上一次的游標位置向下獲取

print(cursor.fetchone()) #獲取乙個值 第一次獲取第乙個

print(cursor.fetchone()) #第二次獲取第二個值

cursor.scroll(1,"absolute") #從檔案的開頭挪動乙個位置 跳過錶的第一條資料

print(cursor.fetchall())

print(cursor.fetchone())

cursor.scroll(-1)

print(cursor.fetchone()) #這裡獲取的值和上一次fetchone獲取的一樣

try:

cursor.execute("update student set gender='男' where sname='理解'")

#如果出錯沒有修改成功 就會回滾 ,比如 網路訊號差 突然斷電等等 出現錯誤的時候

cursor.execute("update class set gender='女' where sname='鋼蛋'")

conn.commit() #對於表中的記錄操作 預設是不提交的 需要用commit 來提交修改

except:

conn.rollback() #rollback 回滾

#關閉鏈結

cursor.close()

conn.close()

名" ;

revoke all on *.* from scote@"localhost";

update mysql.user set grant_priv = "n" where user ="scote" and host = "localhost";

4.重新整理許可權表

flush privileges;

5.刪除使用者

drop user 使用者名稱@"主機位址";

pymysql模組

mysql 使用者管理 MySQL使用者管理

一 mysql使用者管理的必要性 如果我們只能使用root使用者,這樣安全隱患,這時,我們需要使用mysql的使用者管理技術.一次獲得 分配許可權user db tables priv columns priv 許可權範圍一次遞減,全域性許可權覆蓋區域性許可權。換句話說user表中的每個許可權都代表...

mysql授權 使用者管理 MySQL使用者管理 授權

建立使用者 命令 create user username host identified by password 說明 username 建立的使用者名稱 host 使用者可以在哪個主機上登入,任意主機選擇 password 使用者的密碼 例 create user arvin identifie...

Mysql儲存之原生語句操作 pymysql

mysql儲存之原生語句操作 pymysql 關係型資料庫是基於關係模型的資料庫,而關係模型是通過二維表時實現的,於是構成了行列的表結構。表可以看作是某個實體的集合,而實體之間存在聯絡,這個就需要通過表之間的關聯關係來體現,比如主鍵的關聯關係,多個表組成了乙個資料庫,也就是關係型資料庫。其中mysq...