查询用户信息
MySQL中的用户,都存储在系统数据库mysql的user
表中。我们可以查看user表来获取用户信息:
其中:
host
:表示这个用户可以从那一台主机登录,localhost表示从本机登录(本地),%表示可以从任意主机登录user
:用户名authentication_string
: 用户密码通过password函数加密后的*_priv(以_priv结尾)
: 用户拥有的权限
关于用户的操作
创建用户
可以使用以下sql创建用户:
create user '用户名'@'登陆主机/ip' identified by '密码';
本质上就是在user表中添加了一行记录
删除用户
可以使用以下sql删除用户
drop user '用户名'@'主机名';
修改用户密码
- 修改自己密码
set password=password('新的密码');
- root用户修改指定用户密码
mysql5.7或者更早的版本可以使用以下sql修改密码
set password for '用户名'@'主机名'=password('新的密码');
mysql8.0以后可以用以下sql修改密码
alter user 'user1'@'localhost' indentified by 'new_password123';
数据库的权限
下面给出数据库权限的列表
简单来说,数据库的权限约束了用户能对哪些数据库的哪些表做哪些操作。
给用户添加权限
刚创建的用户是没有任何权限的,我们可以使用以下sql基于某个用户指定权限
grant 权限列表 on 库.对象名 to '用户名'@'登陆位置' [identified by '密码']
其中:
- 权限列表中多个权限用逗号隔开
*.*
:代表本系统中的所有数据库的所有对象(表,视图,存储过程等)库.*
: 表示某个数据库中的所有数据对象(表,视图,存储过程等)identified by
可选。 如果用户存在,赋予权限的同时修改密码,如果该用户不存在,就是创建用户
例如:
这样就给了tsx用户所有数据库的所有表的所有操作权限
查看特定用户权限
可以使用以下sql查看某个用户具有的权限
show grants for '用户'@'登录主机';
刷新权限
修改权限有时会不能马上生效,可以使用flush privileges;
刷新
回收权限
可以使用以下sql来回收某个用户的某些权限
revoke 权限列表 on 库.对象名 from '用户名'@'登陆位置';