一、MySQL用户管理概述
MySQL是一个多用户的数据库,MYSQL的用户可以分为两大类:
超级管理员用户(root),拥有全部权限
普通用户,由root创建,普通用户只拥有root所分配的权限
二、MySQL的权限数据库
权限数据库:在MySQL中的mysql数据库。
与权限相关的数据表:user,db,host,tables_priv,columns_priv,procs_priv等。
2.1、user表
1)user表存储的信息
用户的信息:hots(用户所在的主机),user(用户名),password(密码)
用户的权限信息:_priv
安全性相关的信息:ssl_,x509,记录用户登录的验证操作等
与资源分配相关的信息:max_,
max_questions:表示用户在一个小时内最多可以进行的查询次数。
max_updates:表示用户在一个小时内最多可以进行的更新次数,也包括增加数据、删除数据。
max_connections:表示用户最多可以建立的连接数。
2)查看用户信息
select host,user, authentication_string from mysql.user;
三、MySQL数据库用户的增删改
3.1、创建用户
create user u_name@’%’(所有的主机都能够登录) identified by 'passwd';
identified by 会将纯文本密码加密作为散列值存储。
3.2、修改用户
修改用户信息:rename user old_u_name to new_u_name;
mysql 5之后可以使用,之前需要使用update 更新user表.
3.3、删除用户
删除用户信息:drop user u_name;
mysql5之前删除用户时必须先使用revoke删除用户权限,然后删除用户,mysql5之后drop命令可以删除用户的同时删除用户的相关权限。
3.4、更改用户密码
set password for zx_root =password('xxxxxx');
update mysql.user set authentication_string=password('xxxx') where user='u_name';
四、MySQL的权限管理
4.1、权限设置相关的命令
1)查看用户权限信息
show grants for u_name;
2)授予用户权限信息
grant select on db_name.* to u_name;
3)回收用户权限信息
revoke select on db_name.* from u_name; //如果权限不存在会报错
注意:
1)上面的命令也可使用多个权限同时赋予和回收,权限之间使用逗号分隔:
grant select,update,delete,insert on db_name.* to u_name;
立即生效:flush privileges;(5.7可以不用写,自动更新)
2)设置权限时必须给出以下信息:
要授予的权限
被授予访问权限的数据库或表
用户名
4.2、grant和revoke可以在几个层次上控制访问权限
整个服务器,使用 grant ALL 和revoke ALL
整个数据库,使用on database.*
特定表,使用on database.table
4.3、MySQL权限表
注意:
1)MySQL命令行中的命令:tee file_name,可以将接下来所有敲入的内容以及显示的内容全部记录到某一个文件中。
2)在MySQL终端中,当有换行命令输错之后可以使用“\c”结束输入,然后会显示刚才输入的命令在一行,可在修改之后继续。