SQL 用户管理和授权
MySQL数据库管理系统是一个多用户数据库,具有功能强大的访问控制系统,可以为不同用户指定不同权限。默认情况下使用root用户,该用户是超级管理员,拥有所有权限,包括创建用户、删除用户和修改用户密码等管理权限。在实际应用中,为了满足实际项目的需求,可以创建拥有不同权限的普通用户。MySQL在安装时会自动创建一个名为“mysql”的数据库,其中存储的都是用户权限表。用户登录以后,MySQL数据库管理
一.MySQL权限分类
- mysql.user 全局权限
- mysql.db 只能操作某个数据库
- mysql.table_priv 只能操作某个表
- mysql.columns 只能对某个列进行操作
二.查看用户权限
show grants; -- 查询当前用户权限
grants for root@localhost; --查询用户root的权限
三.用户管理
1.查询用户 (以root身份登录)
use mysql; -- 系统数据库
select * from user; -- 用户都在mysql.user表
2.创建用户
(1)使用CREATE USER语句创建用户
create user ‘用户名’@’主机名’ identified by ‘密码’;
#没指定主机名,那么主机名默认为“%”,表示一组主机,即对所有主机开放权限
(2)使用INSERT语句新建用户
当拥有对mysql.user表的INSERT权限后,可使用INSERT语句将用户的信息添加到mysql.user表中。
INSERT INTO mysql.user(Host, User, authentication_string,...) VALUES ('hostname', 'username','password',....);#通常INSERT语句只添加Host、User和authentication_string这3个字段的值
注意:如果通过该账户登录MySQL服务器,不能成功,是因为新创建的用户还没有生效。可以使用FLUSH命令让用户生效,命令如下: FLUSH PRIVILEGES;
3.删除用户
语法格式如下:
DROP USER ‘用户名’@’主机名’;
delete from mysql.user WHERE Host='hostname' AND User='username';
#delete使用时需用户拥有mysql.user表的DELETE权限才能进行
4.修改用户名
rename ‘旧用户名’@’主机名’ to ‘新用户名’@’主机名’
5.修改用户密码
alter user ‘用户名’@’主机名’ indentified by ‘新密码’;
四.权限管理
1.查看用户权限
show grants for ‘用户名’@‘主机名’ ;
2.授予用户权限
GRANT PRIVILEGES ON DATABASE.TABLE TO "用户名"@"主机名";
- PRIVILEGES代表要赋予用户的权限
- DATABASE是数据库名,可以用*代表所有的数据库
- TABLE是数据表名,可以用*代表所有的数据表
- “用户名”和“主机名”标识要授权的登陆用户
3.删除用户权限
revoke 权限列表 on 对象类型 对象名 from ‘用户名’@’主机名’..... ;
案例
1.建立用户admin,密码"123456",在所有机器上均可登录 对所有数据库的数据表都有权限
#建立用户
create user 'admin' identified by '123456';
#用户授权
grant all on *.* to 'admin' identified by '123456' with grant option;
#测试
select host,user,Update_priv,Alter_priv from mysql.user where user='admin' ;
2.建立用户user
,密码为888888
,在本机(172.0.0.1)
登录,对province
数据库的jdxx
数据表有查询权限
use province;
#建立用户
create user 'user'@'172.0.0.1' identified by '888888';
#用户授权
grant select on table jdxx to 'user'@'172.0.0.1';
#代码结束
select host,db,table_name,Table_priv from mysql.tables_priv where user='user';
3.建立用户user,在本机(172.0.0.1)登录,密码为666666.对数据库province库的所有数据表有所有的权限,对数据库library库的book表有查询的权限
#代码开始
#建立用户
create user 'user' @'172.0.0.1' identified by '666666';
#用户授权
grant all on province.* to 'user'@'172.0.0.1';
grant select on library.book to 'user'@'172.0.0.1';
#代码结束
select host,db,user,Delete_priv,Index_priv from mysql.db where user='user' ;
select host,db,table_name,Table_priv from mysql.tables_priv where user='user';
table_priv表结构如下图
更多推荐
所有评论(0)