mysql的安全基礎是使用者不能對過多的資料具有過多的訪問權,即需要給使用者提供他們所需的訪問權,且僅提供他們所需的訪問權,這就是訪問控制
在現實的日常工作中,決不能使用root,應該建立一系列的賬號
mysql使用者賬號和資訊儲存在名為mysql的mysql資料庫中,在需要獲得所有使用者賬號列表時
use mysql;
select
user
from
user
;
mysql資料庫中有乙個名為user的表,包含所有使用者賬號
建立乙個新使用者賬號,建立時不一定需要口令,再次列出賬號時嗎,就會看到新賬號
create
user ben identified by
'p@$$0rd'
;
identified by指定的口令為純文字,mysql將在儲存到user表之前對其進行加密,為了作為雜湊值指定口令,使用identified by ***
grant語句也可以建立使用者賬號,但是create user更清楚簡單
也可以直接插入行到user表中來增加使用者,但不安全,不建議這樣做
重新命名乙個使用者賬號
rename
user ben to bforta;
刪除使用者賬號
drop
user bforta;
新建立的使用者賬號沒有訪問許可權,只能登陸mysql,但看不到資料,也無法進行任何操作
為了看到使用者賬號的許可權
show grants for bforta;
mysql的許可權用使用者名稱和主機名聯合定義,如果不指定主機名,使用預設主機名%,如bforta@%
設定許可權
grant
select
on crashcourse.
*to bforta;
此grant允許使用者在crashcourse.*(crashcourse資料庫 的所有表)上使用select,從此具有了唯讀訪問許可權
此時再執行命令檢視許可權,會發現多了一條
show grants for bforta;
撤銷特定的許可權,被撤銷的訪問許可權必須存在,否則出錯
revoke
select
on crashcourse.
*from bforta;
grant和revoke可以在幾個層次上控制訪問許可權
1、整個伺服器,使用grant all和revoke all
2、整個資料庫,使用on database.*
3、特定的表,使用on database.table
4、特定的列
5、特定的儲存過程
相關許可權見書p202~p203
簡化多次授權,用逗號分隔
grant
select
,insert
on crashcourse.
*to bforta;
更改口令,新口令必須傳遞到passwor()函式進行加密
set password for bforta = password(
'n3w p@$$w0rd'
);
不指定使用者名稱時,更新當前登入使用者的口令
set password = password(
'n3w p@$$w0rd'
);
檢查表鍵是否正常
analyze
table orders;
check table針對許多問題對錶進行檢查
check
table orders, orderitems;
在排除系統啟動問題時,首先應該盡量用手動啟動伺服器,mysql伺服器自身通過在命令列上執行mysqld啟動,幾個常用的mysqld命令列選項
–help 顯示幫助
–safe-mode裝載減去某些最佳配置的伺服器
–verbose顯示全文本訊息
–version顯示版本資訊然後退出
mysql維護管理員依賴的一系列日誌檔案,主要有
1、錯誤日誌
2、查詢日誌
3、二進位制日誌
4、緩慢查詢日誌
一些改善效能的建議
mysql是用一系列預設設定預先配置的,一段時間後可能需要調整記憶體分配,緩衝區大小等
mysql是乙個多使用者多執行緒的dbms,若某乙個任務執行緩慢,則所有請求都會執行緩慢,可以用show processlist顯示所有活動程序,用kill終結某個特定的程序
一條select語句有多種編寫方法,尋找最佳方法
一般來說,儲存過程比一條一條執行其中的mysql語句更快
盡量不用select *,只檢索需要的資料
like很慢,最好使用fulltext
MYSQL必知必會讀書筆記 第二十八章 使用者授權
mysql使用者賬戶和資訊儲存在名為mysql的mysql資料庫中。一般不需要直接訪問mysql資料庫的表,但是有時候會需要直接訪問,需要的時機之一就是需要獲得所有使用者賬號列表時。use mysql select user from user 建立賬號和密碼 createuser dog loca...
學習筆記 《MySQL必知必會》 第二十章
在update語句中使用子查詢 ignore關鍵字 如果用update語句更新多行,並且在更新這些行中的一行或多行時出乙個現錯誤,則整個update操作被取消 錯誤發生前更新的所有行被恢復到它們原來的值 為即使是發生錯誤,也繼續進行更新,可使用ignore關鍵字,刪除資料 delete delete...
第二十八天
1 建立乙個名稱為itcast的資料庫。create database itcast 2 設計資料表tb student的字段結構,欄位有id 學號 name 姓名 age 年齡 enrolmentdate 入學時間 並選擇適合的資料型別。tb student資料表的字段結構如下表所示 欄位名 型別...