• MySQL用户管理


    一、权限表

    默认创建名为mysql的数据库,存储的是每个用户的权限信息

     

    user表

    存储每个用户的权限

     

    用户列

    Host、User、Password字段

    用户基本的登录信息,命令修改密码也是改password字段

     

    权限列

    Select_priv、Insert_priv等字段

    查询、增删改等权限,以及管理权限

    Y表示该权限应用到所有数据库,N则不能应用到所有,默认为N

     

    安全列

    ssl_type、ssl_cipher、x509_issuer、x509_subject字段

    ssl用于加密,x509标识用户

     

    资源控制列

    max_questions、max_updates、max_connections、max_user_connections字段

    max_question字段:每小时最大查询

    update字段:每小时最大更新

    conn字段:每小时建立的最大连接

    nuser_conn字段:单个用户最大连接数

     

    db表

    存储用户操作数据库的权限

     

    用户列

    Host、Db、User字段

     

    权限列

    相比user表多了Create_routine_priv、Alter_routine_priv字段,用于创建、修改存储过程

     

    tables_priv表

    可对单个表进行权限设置

    字段:

    Host、Db、User

    Table_priv:设置表的权限

    Timestamp:修改权限时间

    Grantor:指定用户

     

    columns_priv表

    单个数据列进行权限设置

    字段:

    Host、Db、User、Table_name、Timestamp略

    Columns_priv:设置列的权限

    Columns_name:指定哪一列

     

    procs_priv表

    可对存储过程存储函数进行权限设置

    字段:

    Host、Db、User、Grantor、Timestamp略

    Routine_name:存储过程名

    Routine_type:存储过程类型,有FUNCTION、PROCEDURE

     

    、用户管理

    查看

    mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
    +------------------------------+
    | query                        |
    +------------------------------+
    | User: 'user1@localhost'@'%'; | 
    | User: 'root'@'127.0.0.1';    |
    | User: 'root'@'::1';          |
    | User: 'root'@'localhost';    |
    +------------------------------+

     

    创建

    用户user1,密码123,主机名localhost

    mysql> create user 'user1@localhost' identified by '123';

     

    INSERT创建用户,必须为后3个字段设置默认值

    mysql> insert into mysql.user(Host,User,Password,ssl_cipher,x509_issuer,x509_subject)
    -> values('localhost','user1',PASSWORD('123'),'','','');
    mysql> flush privileges;--重新从user表加载权限

     

    user1远程登录,且拥有所有权限。%表示任意主机可登录

    mysql> create user 'user1'@'%' identified by '123456';
    mysql> grant all privileges on *.* to 'user1'@'%';

     

    删除

    mysql> drop user 'user1@localhost';
    mysql> delete from mysql.user where Host='localhost' and User='user1';

     

    修改密码

    修改user1密码

    mysql> set password for 'user1@localhost'=password("123456");
     
    mysql> update mysql.user
        -> set password=password("123")
    -> where User="user1" and host="localhost";
     
    mysql> grant select on *.* to 'user1@localhost' identified by '123';

     

    修改root密码

    mysql> set password=password("123456");

     

    破解root密码

    1、关闭服务

    [root@CentOS ~]# service mysql stop

     

    2、不加载权限表启动

    [root@CentOS ~]# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &

     

    3、连接数据库

    [root@CentOS ~]# mysql -u root mysql

     

    4、修改密码

    mysql> update mysql.user
        -> set password=password("123456")
    -> where user="root";

     

    5、刷新权限表

    mysql> flush privileges;

    6、重启服务

    [root@CentOS ~]# service mysql restart

     

    三、权限管理

    查看

    查看当前用户

    mysql> show grants;

     

    查看root

    mysql> show grants for root@localhost; 

     

    类型

    所有权限:ALL PRIVILEGES

    DDL:CREATE、DROP、ALTER、CREATE TEMPORARY TABLES(创建临时表)、LOCK TABLES(锁定表)、GRANT OPTION

    DML:SELECT、INSERT、UPDATE、DELETE、INDEX(索引查询表)、REFERENCE

    视图:CREATE VIEW、SHOW VIEW

    存储过程:ALTER ROUTINE、CREATE ROUTINE、EXECUTE

    用户:CREATE USER

    服务器:SHOW DATABASE、FILE(加载服务器文件)、PROCESS(服务器管理)、RELOAD(重新加载权限表)、REPLICATION CLIENT、REPLICATION SLAVE、SHUTDOWN、SUPER(超级权限)

     

    授予

    语法:

    GRANT priv_type [column_list] ON 数据库.表

    TO user [IDENTIFIED BY [PASSWORD] 'PASSWORD']

    [ user [IDENTIFIED BY [PASSWORD] 'PASSWORD'] ]

    [WITH with_option [with_option] ]

     

    #priv_type:权限类型

    #column_list:列

    #identified by:设置密码

    #with_option:

    GRANT OPTION:用户还可授权给别的用户

    MAX_QUERIES_PER_HOUR 10:每小时最多查询10次

    MAX_UPDATES_PER_HOUR 10:每小时最多更新10次

    MAX_CONNECTIONS_PER_HOUR 10:每小时最多建立10次连接

    MAX_USER_CONNECTIONT 10:每个用户每小时最多建立10个连接

     

    创建用户user4,有查询、更新所有表权限

    mysql> grant select,update on *.*
        -> to 'user4'@'localhost' identified by '123'
    -> with grant option;

     

    授权user3查看mysql数据库的所有表

    mysql> grant select on mysql.*
    -> to 'user3@localhost';

     

    收回

    撤销user4所有权限

    mysql> revoke all on *.*
    -> from user4@localhost;

     

    本文出自 “运维菜鸟.log” 博客,谢绝转载!

  • 相关阅读:
    2019-07-15_nginx 启动报错 “/var/run/nginx/nginx.pid" failed” 解决方法
    2019-07-12 linux下关闭、开启防火墙
    2019-07-12nginx的安装,启动,关闭
    2019-07-11 nginx 下网页显示乱码
    2019-07-05 submit左对齐快捷键
    2019-07-02 windows下用cmd命令netstat查看系统端口使用情况
    设计一个精致按钮
    JS 实现省市三级联动
    使用style 对象实现图片的覆盖(overlay)
    display 显示或隐藏元素
  • 原文地址:https://www.cnblogs.com/sjy000/p/4835172.html
Copyright © 2020-2023  润新知