zoukankan      html  css  js  c++  java
  • MySQL用户授权

    一、授权语法格式 
    grant 权限列表 on 数据库名.表名 to '用户名'@'客户端主机' [identified by '密码'];

    单词: privileges [ˈprivilidʒz] 权限
    单词: identified [aɪ'dentɪfaɪd] 认出( identify的过去式和过去分词 ),身份验证

    @ 权限列表:
    all 所有权限(不包括授权权限)
    select,update 查询,更新权限
    select(name,address) 只查询name,address字段的权限
    create create权限

    @ 数据库.表名:
    *.* 所有库下的所有表
    web.* web库下的所有表
    web.stu_info web库下的stu_info表

    @ 客户端主机:
    % 所有主机
    192.168.2.168 主机
    192.168.2.% 192.168.2.0网段的所有主机


    二、登录MySQL主(master)数据库服务器
    1.直接登录到主机的某个数据库中(如:zyyshop数据库)
    [root@CentOS5 ~]# /usr/local/mysql/bin/mysql -uroot -p123456 zyyshop
    mysql>

    2.登录主机:隐式输入密码,进入之后再选择数据库
    [root@CentOS5 ~]# /usr/local/mysql/bin/mysql -uroot -p
    Enter password:
    mysql> use zyyshop


    三、用户授权
    1.向主(master)数据库创建授权用户slave1,使之可由从任何主机(%)登录到主(master)服务器

    mysql> grant all on *.* to 'slave1'@'%' identified by '123';

    @ 权限列表: all 所有权限(其中,关键字 “privileges” 可以省略)
    @ 数据库.表名:*.* 所有库的所有表
    @ 授权用户: slave1
    @ 客户端主机: % 所有主机
    @ 登录密码: 123



    2.向主(master)数据库创建授权用户slave2,使之可由从主机(192.168.137.%)登录到主(master)服务器:

    mysql> grant select(name,classid),insert on zyyshop.stu to 'slave2'@'192.168.137.%' identified by '456';

    @ 权限列表: select(name,classid),insert
    @ 数据库.表名:zyyshop.stu 即zyyshop数据库的stu表
    @ 授权用户: slave2
    @ 客户端主机: 192.168.137.0网段的所有主机
    @ 登录密码: 456

    3.向主(master)数据库创建授权用户slave3,使之可由从主机(192.168.137.202)登录到主(master)服务器:

    mysql> grant all on zyyshop.stu to 'slave3'@'192.168.137.202' identified by '789';

    @ 权限列表: all 所有权限
    @ 数据库.表名:zyyshop.stu 即zyyshop数据库的stu表
    @ 授权用户: slave3
    @ 客户端主机: 192.168.137.202
    @ 登录密码: 789

    4.刷新授权表
    mysql> flush privileges;

    总结: 1.不要使用系统自带的test数据库做实验,这是个开放测试库对权限设置通常不起作用致实验不成功,应该自己建立一个库。
    2.对用户授权之后,会在mysql数据库的 mysql.user 表里存储当前用户信息;在 mysql.columns_priv 表里存储详细的权限字段;
    3.grant, revoke 用户权限调整后,如果发现没有生效可尝试重新连接并登录MySQL主机。
    4.如果想让被授权的用户可以将“获得的权限”也授予其他用户,需要加选项 “with grant option”(通常很少这样用,一般是DBA自个搞定授权)
    @ user1还可以将获得的 testdb.stu 的 select,update 权限授权其它用户
    mysql> grant select,update on testdb.stu to 'user1'@'localhost' with grant option;


    四、客户端登录

    # /usr/local/mysql/bin/mysql -uslave3 -p789 -h192.168.137.201 zyyshop

    @ 用户名: slave3
    @ 密码: 789
    @ 主服务器地址: 192.168.137.201
    @ 数据库名: zyyshop

    五、查看权限
    1.用户远程用户登录后,查看自己当前的权限(只能查看自己的权限):
    mysql> show grants;

    2.主(master)数据库的管理员DBA,查看系统中任一用户的权限列表(DBA用的操作命令)
    @ 查看slave2用户的权限情况:
    mysql> show grants for 'slave3'@'192.168.137.202';


    六、收回权限
    格式:revoke {权限列表} on {数据库名} from '用户名'@'客户端主机'

    mysql> revoke all on *.* from 'slave1'@'%'; //收回 slave1 所有权限
    mysql> revoke select(classid) on zyyshop.stu from 'slave2'@'192.168.137.%'; //收回 slave2 对stu表classid的查询权限

    注: 1.权限收回之后,但对应的用户仍然存在于mysql.user表中;
    2.如果只删除用户,不会删除用户的权限,权限记录仍存于msyql.columns_priv表中;
    mysql> delete from mysql.user where user='slave3' and host='192.168.137.202'; //从用户表中删除
    mysql> delete from msyql.columns_priv where user='slave3'; //从字段权限明细表中删除


    七、修改密码
    @ 用户自己修改自己的密码
    mysql> set password=password('123456');

    @ DBA管理员为用户修改密码1:
    mysql> set password for 'slave3'@'192.168.137.202' = password('123');

    @ DBA管理员为用户修改密码2:
    mysql> update mysql.user set password = password('123') where host='192.168.137.202' and user='slave1';


    刷新授权表:
    mysql> flush privileges;

  • 相关阅读:
    【算法】剑指第二版面试题6 :从尾到头打印链表
    Go电商秒杀 (1)
    Go秒杀服务端优化
    Linux AUFS 文件系统
    mount挂载虚拟文件系统
    自己动手写docker之Linux命令(CentOS7.7)
    自己动手写docker之namespace和cgroup
    【协作式原创】自己动手写docker之urfave cli
    Go 1.14之前的死循环Case
    linux下定时执行任务的方法
  • 原文地址:https://www.cnblogs.com/martinzhang/p/3454316.html
Copyright © 2011-2022 走看看