新建mysql用户无法远程连接或者无法看到数据库等,用户权限管理的问题

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;

你可能感兴趣的:(mysql,mysql)