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;

  • 相关阅读:
    flex + bison multiple parsers
    Educational Codeforces Round 95 (Rated for Div. 2)
    python学习笔记 day20 序列化模块(二)
    python学习笔记 day20 常用模块(六)
    python 学习笔记 常用模块(五)
    python学习笔记 day19 常用模块(四)
    python学习笔记 day19 常用模块(三)
    python学习笔记 day19 常用模块(二)
    python学习笔记 day19 作业讲解-使用正则表达式实现计算器
    python学习笔记 day19 常用模块
  • 原文地址:https://www.cnblogs.com/martinzhang/p/3454316.html
Copyright © 2011-2022 走看看