怎么修改mysql权限 mysql80修改用户权限

mysql 权限设置

背景

创新互联公司主要从事成都做网站、成都网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务临汾,10余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575

在了解动态权限之前,我们先回顾下 MySQL 的权限列表。

权限列表大体分为服务级别和表级别,列级别以及大而广的角色(也是MySQL 8.0 新增)存储程序等权限。我们看到有一个特殊的 SUPER 权限,可以做好多个操作。比如 SET 变量,在从机重新指定相关主机信息以及清理二进制日志等。那这里可以看到,SUPER 有点太过强大,导致了仅仅想实现子权限变得十分困难,比如用户只能 SET 变量,其他的都不想要。那么 MySQL 8.0 之前没法实现,权限的细分不够明确,容易让非法用户钻空子。

那么 MySQL 8.0 把权限细分为静态权限和动态权限,下面我画了两张详细的区分图,图 1 为静态权限,图 2 为动态权限。

图 1- MySQL 静态权限的权限管理图

图 2-动态权限图

那我们看到其实动态权限就是对 SUPER 权限的细分。 SUPER 权限在未来将会被废弃掉。

我们来看个简单的例子,

比如, 用户 'ytt2@localhost', 有 SUPER 权限。

mysql show grants for ytt2@'localhost';+---------------------------------------------------------------------------------+| Grants for ytt2@localhost                                                       |+---------------------------------------------------------------------------------+| GRANT INSERT, UPDATE, DELETE, CREATE, ALTER, SUPER ON *.* TO ytt2@localhost |+---------------------------------------------------------------------------------+1 row in set (0.00 sec)

但是现在我只想这个用户有 SUPER 的子集,设置变量的权限。那么单独给这个用户赋予两个能设置系统变量的动态权限,完了把 SUPER 给拿掉。

mysql grant session_variables_admin,system_variables_admin on *.* to ytt2@'localhost';Query OK, 0 rows affected (0.03 sec)mysql revoke super on *.* from ytt2@'localhost';Query OK, 0 rows affected, 1 warning (0.02 sec)

我们看到这个 WARNINGS 提示 SUPER 已经废弃了。

mysql show warnings;

+---------+------+----------------------------------------------+

| Level   | Code | Message                                      |

+---------+------+----------------------------------------------+

| Warning | 1287 | The SUPER privilege identifier is deprecated |

+---------+------+----------------------------------------------+

1 row in set (0.00 sec)`

mysql show grants for ytt2@'localhost';

+-----------------------------------------------------------------------------------+

| Grants for ytt2@localhost                                                         |

+-----------------------------------------------------------------------------------+

| GRANT INSERT, UPDATE, DELETE, CREATE, ALTER ON *.* TO ytt2@localhost          |

| GRANT SESSION_VARIABLES_ADMIN,SYSTEM_VARIABLES_ADMIN ON *.* TO ytt2@localhost |

+-----------------------------------------------------------------------------------+

2 rows in set (0.00 sec)

当然图 2 上还有其它的动态权限,这里就不做特别说明了。

如何更改mysql数据库用户权限

1,要授予的权限

2,被授予访问权限的数据库或表

3,用户名

grant和revoke可以在几个层次上控制访问权限

1,整个服务器,使用 grant ALL 和revoke ALL

2,整个数据库,使用on database.*

3,特点表,使用on database.table

4,特定的列

5,特定的存储过程

如何设置mysql用户的权限

用户管理

mysqluse mysql;

查看

mysql select host,user,password from user ;

创建

mysql create user zx_root IDENTIFIED by 'xxxxx'; //identified by 会将纯文本密码加密作为散列值存储

修改

mysqlrename user feng to newuser;//mysql 5之后可以使用,之前需要使用update 更新user表

删除

mysqldrop user newuser; //mysql5之前删除用户时必须先使用revoke 删除用户权限,然后删除用户,mysql5之后drop 命令可以删除用户的同时删除用户的相关权限

更改密码

mysql set password for zx_root =password('xxxxxx');

mysql update mysql.user set password=password('xxxx') where user='otheruser'

查看用户权限

mysql show grants for zx_root;

赋予权限

mysql grant select on dmc_db.* to zx_root;

回收权限

mysql revoke select on dmc_db.* from zx_root; //如果权限不存在会报错

如何修改mysql数据库的访问权限

你的mysql数据库里面有一个数据库,名字教做mysql,里面有个表,名字叫做user,你看一下这个表的结构和现有数据,你就知道应该怎么做了,比如你可以添加一条数据,host为你指定的ip,user可以是%,password就不管了,后面设置相应的权限(可以全部都是y),这样那个机器无论用什么用户和密码都可以连接数据库,而拥有你指定的权限。

耐心点吧,我相信你一看就明白。


文章名称:怎么修改mysql权限 mysql80修改用户权限
标题路径:http://hbruida.cn/article/dddghoi.html