mysql采用二级访问控制机制:第一级是用户登录服务器权限,通过用户名,密码,客户端登录IP来控制;第二级是针对已经登录的用户,对那些数据库具有哪些权限。权限可以通过如下查询:
show privileges;
mysql通过mysql数据库来保存这些权限信息的。
use mysql;
show tables;
其中user表保存了大部分信息,但是一般只用它来保存一级权限:
select Host ,User, Password from user;
匿名用户要删除,即是那些可以不用用户名登录的用户:
delete from user where User='';
user表中有二级权限的选项,但是为了区分的具体的数据库,就不使用该表的内容,而把它留到其他表中,如db;一般对二级权限修改的时候都使用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是数据库,invoice 是表,*.*表示所有数据库。
需要查看某用户的权限时可以
show grants for user@localhost;
删除用户的权限使用revoke
REVOKE ALL PRIVILEGES, GRANT OPTION on db.table FROM user ;