mysql采用二級訪問控制機制:第一級是用戶登錄服務器權(quán)限,通過用戶名,密碼,客戶端登錄IP來控制;第二級是針對已經(jīng)登錄的用戶,對那些數(shù)據(jù)庫具有哪些權(quán)限。權(quán)限可以通過如下查詢:
show privileges;
mysql通過mysql數(shù)據(jù)庫來保存這些權(quán)限信息的。
use mysql;
show tables;
其中user表保存了大部分信息,但是一般只用它來保存一級權(quán)限:
select Host ,User, Password from user;
匿名用戶要刪除,即是那些可以不用用戶名登錄的用戶:
delete from user where User='';
user表中有二級權(quán)限的選項,但是為了區(qū)分的具體的數(shù)據(jù)庫,就不使用該表的內(nèi)容,而把它留到其他表中,如db;一般對二級權(quán)限修改的時候都使用SQL;
CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass';
GRANT ALL ON db1.* TO 'jeffrey'@'localhost';
GRANT SELECT ON db2.invoice TO 'jeffrey'@'localhost';
GRANT USAGE ON *.* TO 'jeffrey'@'localhost';
其中all和usage是相對的,即all全有,usage全無;db1是數(shù)據(jù)庫,invoice 是表,*.*表示所有數(shù)據(jù)庫。
需要查看某用戶的權(quán)限時可以
show grants for user@localhost;
刪除用戶的權(quán)限使用revoke
REVOKE ALL PRIVILEGES, GRANT OPTION on db.table FROM user ;