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 "用户名"@"主机名";
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表结构如下图