mysql學習筆記(三)

2021-09-18 05:48:26 字數 2928 閱讀 9887

19使用者管理

許可權表儲存賬戶許可權資訊表主要有:user、db、host、tables_priv、columns_priv、procs_priv

20賬戶管理

建立新使用者

create user user_name //create user建立的使用者沒有任何許可權

建立使用者名稱jeffery 主機名是localhost 密碼為 mypass

create user 'jeffrey'@'localhost' identified by 'mypass';

密碼的雜湊值可以用password()函式獲取

mysql>select password('mypass');

grant建立使用者並賦予許可權

建立乙個新使用者usertest,對資料中的所有表都有select update的許可權

mysql>grant select,update on *.* to 'usertest'@'localhost' identified by 'mypass';

user 表中的user和host是區分大小寫的,在查詢的時候要指定正確得使用者名稱或主機名。

在user表中直接插入一條資料

insert into mysql.user(host,user,password) values('host','user',password('aaa'));

刪除使用者

mysql>drop user 'jeffery' @'localhost';

drop user 不能自動關閉任何開啟的使用者對話。而且,如果使用者有開啟的對話,此時取消使用者,,命令則不會生效,直到使用者對話關閉後才生效。一旦對話關閉,使用者也就被取消,再次登入會顯示實效。

使用delete 刪除使用者

mysql>delete from mysql.user where host='localhost' and user='test';

(1)root使用者修改自己的mysql密碼

①使用mysqladmin修改

mysql>mysqladmin -u -root -h localhost -password 'rootpwd';

②使用update修改mysql使用者的user表

mysql>update mysql.user password=password('rootpwd') where user='root' and host='localhhost';

③使用set修改root的密碼

mysql>set password=password("rootpwd");

(2)root使用者修改普通使用者密碼

①使用update修改普通使用者的密碼

mysql>update mysql.user password=password('rootpwd') where user='username' and host='localhhost';

②使用grant修改普通使用者的密碼

mysql>grant usage on *.* to 'testuser'@'localhost' identified by 'newpwd';

(3)普通用修改自己的密碼

③使用set修改密碼

mysql>set password=password("rootpwd");

(4)root使用者密碼丟失解決方法

①使用--skip-grant-tables選項啟動mysql服務

mysqld --skip-grant-tables

mysqld-nt --skip-grant-tables

mysqld-safe --skip-grant-tables

/etc/init.d/mysql start -mysqld --skip-grant-tables(linux下)

21許可權管理

(1)授權

①全域性層級

限適用於乙個給定的伺服器中的所有資料庫。這些許可權都儲存在mysql.user表中。

grant all on *.* revoke all on *.*

②資料庫層級

限適用於乙個給定的資料庫中的所有目標。這些許可權儲存在mysql.db和mysql.host表中。

grant all on db_name.* revoke all on db_name.*

③表層級

限適用於乙個給定表中的所有列。這些許可權儲存在mysql.tables_priv表中。

grant all on db_name.table1_name revoke all on db_name.table1_name

④列層級

限適用於乙個給定表中的單一列。這些許可權儲存在mysql.columns_priv表中。

當時用revoke時,必須指定與被授權列相同的列。

⑤子程式層級

create routine 、alter routine 、execute和grant適用於已儲存的子程式。

除了create routine ,其他的都儲存在mysql.procs_priv表中。

(2)要使用grant 和 revoke 必須擁有grant option許可權。

(3)**許可權

revoke from

mysql>revoke update on *.* from 'testuser'@'localhost';

(4)當mysql從舊版本公升到新版本時,execute、create view、show view、create user、create routine和all routine許可權,必須首先公升級授權表。

(5)檢視許可權

mysql>show grant for 'user'@'localhost';

22訪問控制

使用者向mysql發起請求——>mysql檢查user表中的許可權是否符合(是)——>mysql檢查db表中的許可權是否符合(是)——>mysql檢查tables_priv表中的許可權是否符合(是)——>mysql檢查columns_prive表中的許可權是否符合

Mysql學習筆記(三)

所謂的子查詢,就是在 乙個查詢中巢狀了其他的若干查詢 即在乙個select查詢語句中的where和from子句中包含另乙個select查詢語句。在查詢語句中,外層的select查詢語句稱為 主查詢 where子句中的select查詢語句被稱為 子查詢 也稱巢狀查詢。列子查詢是指查詢結果返回的結果集是...

MySQL學習筆記(三)

一 修改提示操作符的命令 prompt 用法 prompt 後面接入 u 使用者名稱 h 伺服器的名字 d 當前開啟的資料庫 問題 但是這個命令有個問題是,當你在設定了你的 提示符的格式後,你退出了資料庫,等你下次再進來資料庫的時候提示符又變為了系統預設的,如何才能夠一次設定好,就不會變了呢?解決 ...

mysql學習筆記三

1.在 innodb 事務中,行鎖是在需要的時候才加上的,但並不是不需要了就立刻釋放,而是要等到事務結束時才釋放。所以把 最可能造成鎖衝突 最可能影響併發度的鎖盡量往後放 2.設定innodb deadlock detect on來開啟死鎖自動檢測,如果在熱點更新的情況下,建議引入中介軟體來削峰。3...