1.MySQL用户和权限管理

         user表:包含用户的帐号,全局权限

         db表:数据库级别的权限定义

         tables_priv表:表级别权限

         columns_priv表:列级别权限

         procs_priv表:存储过程和存储函数相关的权限

         proxies_priv表:代理用户权限



2.用户帐号:

    用户名@主机构成

        用户名:16个字符以内

        主机:

           主机名:www.baidu.com| mysql

           IP192.168.1.100

           网络地址:192.168.1.0/255.255.255.0

               通配符:% _

                  192.168.%.%

                  %.baidu.com

                                              

         --skip-name-resolve:为了加速mysql服务器的性能,而且访问mysql的时候也不需要它通过主机名来认证,关闭一切基于主机名认证的方式来进行授权,提高用户连接时候的速度



3.权限级别:

         全局级别:SUPER,

         库级别:

         表级别:

         列级别:

         存储过程和存储函数级别:



4.创建用户

         第一种:CREATE USER [email protected] IDENTIFIED BY 'password'

        

         第二种:GRANT

                  

         第三种:INSERT INTO mysql.user

                mysql>FLUSH PRIVILEGES;



4.1查看某个用户的授权信息

         SHOW GRANTS FOR '[email protected]';




5.为用户添加student库中“创建”的权限

MySQL用户与权限

MySQL用户与权限



当创建数据库的时候,显示没有权限

MySQL用户与权限



6.为用户添加创建sdb和创建sdb库下任何表的权限

MySQL用户与权限

MySQL用户与权限



7当我们为新创建的tb1表插入数据的时候,显示没有权限

MySQL用户与权限



8.为用户添加sdb库下插入数据的权限

MySQL用户与权限


当授权完成之后也重读授权表(执行了FLUSH PRIVILEGES;)但是还是不能插入数据

MySQL用户与权限


当退出当前mysql再重新登录的时候发现可以插入数据了,所以INSERT权限重新登录

MySQL用户与权限




9.为用户同时添加UPDATEDELETE权限,以及DELETE权限

MySQL用户与权限


更新、删除的时候显示没有权限,和INSERT权限一样,需要重新登录

MySQL用户与权限




于是重新登录,发现没有SELECT 权限,因为要更新或者删除某一条记录,需要先查到之后才能进行删除,所以需要SELECT权限

MySQL用户与权限

MySQL用户与权限

MySQL用户与权限




10.撤销某个用户的某项权限

MySQL用户与权限




11.撤销用户的UPDATE权限,然后为用户添加只能修改sdb库下stb1表的age字段的权限

MySQL用户与权限

MySQL用户与权限

MySQL用户与权限




12.修改MySQL的全局变量,killMySQL进程,需要有SUPER权限

MySQL用户与权限

MySQL用户与权限

MySQL用户与权限




13.删除用户、用户重命名

DROP USER [email protected]

RENAME USER old_name TO new_name;



14.忘记root密码

14.1关闭MySQL服务

MySQL用户与权限



14.2编辑mysql脚本,添加相关参数

    编辑/etc/init.d/mysqld,找到下面内容,然后添加

         --skip-grant-tables

        --skip-networking

MySQL用户与权限

MySQL用户与权限




14.3启动MySQL服务,并连接到MySQL

MySQL用户与权限



14.4修改密码

当视图使用修改授权表的方式去修改密码的时候,MySQL显示说不可以,因为当前启动的MySQL服务已经跳过授权表了

MySQL用户与权限



所以只能通过修改user表的方式来修改密码了

MySQL用户与权限



14.5修改完密码以后,停止MySQL服务,删除/etc/init.d/mysqld中刚才添加的内容

    --skip-grants-table --skip-working然后重启MySQL服务



15.权限手册

http://dev.mysql.com/doc/mysql-security-excerpt/5.5/en/privileges-provided.html

MySQL用户与权限

MySQL用户与权限



16.用户授权的一些其它选项说明

MySQL用户与权限

一般情况下不需要使用object_type,当我们要指定特定的,表、存储函数、存储过程

的时候,就需要指定了


当需要为db_name库中的存储函数abc授权的时候,如果执行以下命令,是否可以正常

的给abc存储函数授权呢?



GRANT EXECUTE ON db.abc TO [email protected]'%';

知道abc代表的是什么吗、?---》不知道----》所以我们需要指定授权的类型

 

所以要想给存储函数abc授权,需要执行

GRANT EXECUTE ON FUNCTION db.abc TO [email protected]'%';





转载于:https://blog.51cto.com/fanfusuzi/1644010

相关文章: