创建用户:
MySQL对用户名和密码是大小写敏感的
(system@localhost) [mysql]> create user jss;
(system@localhost) [mysql]> select user,host,password from mysql.user where user='hugc';
如果user字典表中的host列值为空或%,均代表任意主机
在MySQL数据库中,用户和主机(‘user’@’host’)组成一个唯一账户
(system@localhost) [mysql]> create user hugc@’192.168.1.201’ identified by ‘hugc’;
(system@localhost) [mysql]> create user hugc@’192.168.1.%’ identified by ‘hugc’;
修改用户密码:
(hugc@localhost) [(none)]> set password for jss=password('hugc');
将用户密码设置为过期:
(system@localhost) [mysql]> alter user hugc password expire;
GRANT方式创建用户:
(system@localhost) [mysql]> grant select on test.* to hugc_test@’192.168.1.201’ identified by ‘hugc’;
(system@localhost) [mysql]> select user,host,password from mysql.user;
修改数据字典方式创建用户:
(system@localhost) [mysql]> insert into mysql.user (host,user,password) values (‘192.168.1.201’,’test_test’,password(‘123456’));
(system@localhost) [mysql]> update mysql.user set password=password(‘1234567’) where user=’test_test’;
授予权限:
priv_type
object_type
priv_level
ssl_option
with_option
(system@localhost) [mysql]> grant select on mysql.user to hugc;
查看用户权限:
(system@localhost) [mysql]> show grants for hugc;
收回用户权限:
(system@localhost) [mysql]> revoke select on mysql.user from hugc;
MySQL数据库中的权限,操作时授予和收回是的权限级别(priv_level)必须对应,否则无法成功回收
(system@localhost) [mysql]> show grants for hugc;
收回用户所有权限,不管授予用户的是什么权限级别,什么对象的什么权限,直接将用户恢复至裸身(USAGE)状态
(system@localhost) [mysql]> revoke all,grant option from hugc;
(system@localhost) [mysql]> show grants for hugc;
USAGE权限意指没有权限(no privileges),这个权限用户一经创建就会拥有,并且无法通过REVOKE语句收回
删除用户:
(system@localhost) [mysql]> drop user hugc;
MySQL数据库中的对象保存并不是依赖于用户,而是依赖于库(database),用户被删除没有任何关系,对象仍在,好好的保存在存储它的数据库中
全局权限:
与全局权限相关的权限信息记在mysql.user表中
(system@localhost) [mysql]> grant create on *.* to hugc;
授予了在任何库下创建任何对象的权限,没有select权限,没有update权限,没有delete权限
(system@localhost) [mysql]> select * from mysql.user where user=’ hugc’;
数据库级别权限:
主要用于控制账户(‘user’@’host’)操作某个数据库的权限,数据库级别的权限信息记录在mysql.db表中
(system@localhost) [mysql]> grant create on hugcdb.* to hugc;
(system@localhost) [mysql]> select * from mysql.db where user=’ hugc’;
进行验证
(jss@localhost) [mysql]>show databases;
表级权限:
表对象的授权信息保存在mysql.tables_priv字典表中
(system@localhost) [mysql]> grant all on hugcdb.users to hugc;
列级权限:
是MySQL权限体系中的最细粒度,保存在mysql.columns_priv,属于权限认证体系中的高精尖武器。通过对表中列的授权,可以实现只允许从某主机来的某用户访问某库的某表的某列。
(system@localhost) [mysql]> grant select (phoneno) on hugcdb.users to hugc;
(system@localhost) [mysql]> select * from mysql.columns_priv;
(system@localhost) [mysql]> select * from mysql.table_priv where user=’hugc’;
tables_priv只是表级粗粒度的记录,columns_priv才是决定列级权限粒度的核心
尽管通过查看表结构,或者使用select语句查询表数据时只能查到被授予权限的列,但是,该用户查询information_schema.tables或其他相关字典表时,看到的表的信息仍然是完整的,比如表的大小、索引大小、平均列长度等,这也是information_schema库比较特殊的另一个体现