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...