mysql中mysql数据库中的user表,是整个mysql用户的信息;
- 不过如果直接查看select * from user;字段太多折行,没法看
- 装换成列式式:select * from user \G;
- 可以看到可以执行的权限和相关的权限
系统默认的账户是没有配置远程访问:需要在权限表中配置,需要在host项配置为%;就可以使这个账号远程访问,
- %:代表所有的主机
- 默认的话是localhost:代表只能本机通过命令行访问
- 也可以设置某网段,或者某ip访问提高安全
创建用户:create user zhang3 identified by ‘123123’;
- 表示创建名称为zhang3的用户,密码设为123123;且host默认是%是可以远程访问的账号
查询user表,我们也可以看到相关的权限insert,update…,这些都是可以手动授权给某用户,比如只能看到a数据库,对a数据库只能读
- 授权命令:
grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’;
该权限如果发现没有该用户,则会直接新建一个用户。
比如
grant select,insert,delete,drop on test.* to li4@localhost ; - 给li4用户用本地命令行方式下,授予atguigudb这个库下的所有表的插删改查的权限。
grant all privileges on . to joe@’%’ identified by ‘123’;
#授予通过网络方式登录的的joe用户 ,对所有库所有表的全部权限,密码设为123.
收回权限
- 查看当前用户权限
show grants; - 收回权限命令:
revoke 权限1,权限2,…权限n on 数据库名称.表名称 from 用户名@用户地址 ;
REVOKE ALL PRIVILEGES ON mysql.* FROM joe@localhost; - 收回全库全表的所有权限
REVOKE select,insert,update,delete ON mysql.* FROM joe@localhost;
必须用户重新登录后才能生效
查看权限
- 查看当前用户权限
show grants; - 查看某用户的全局权限
select * from user ; - 查看某用户的某个表的权限
select * from tables_priv;