百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程文章 > 正文

MySQL运维实战(2.3)MySQL的权限体系

qiyuwang 2024-10-25 16:36 17 浏览 0 评论

作者:俊达

MySQL权限划分

MySQL权限按授权范围可以分为三大类:全局权限、数据库权限和对象权限。

  • 全局权限主要用于管理系统模块,这些权限涵盖了对MySQL服务器整体的操作和管理,与具体的数据库或对象无关,因此在授权时需要指定为*.*。
  • 数据库权限是用于管理数据库,这些权限针对特定数据库,允许用户执行与该数据库相关的操作,例如创建、修改、删除数据库等。在授权时需指定database_name.*。
  • 对象权限是用于管理数据库对象,涉及对具体数据库对象(如表、字段)的权限管理,允许用户对特定对象执行特定操作,例如对表进行查询、更新或删除操作。授权时需指定为database_name.table_name或database_name.table_name.column_name。

这种分类使得MySQL的权限管理更加灵活,可以根据实际需求精细地控制不同级别的权限,保障数据库安全性和管理的有效性。

MySQL各权限说明

权限名称

授权范围

描述

ALL

全局权限

实例所有权限

CREATE ROLE

全局权限

创建数据库角色

CREATE TABLESPACE

全局权限

创建表空间

CREATE USER

全局权限

创建数据库用户

DROP ROLE

全局权限

删除数据库角色

PROCESS

全局权限

查看实例中的所有session(show processlist)

默认只能看登录用户的session

PROXY

全局权限


RELOAD

全局权限

执行下面的操作需要reload权限

flush privileges

flush logs

REPLICATION CLIENT

全局权限

查看复制信息的权限(show slave status)

REOLICATION SLAVE

全局权限

复制权限(从主库复制数据)

SHUTDOWN

全局权限

关闭实例

SUPER

全局权限

超级权限

kill任何用户的session

修改参数

管理复制(start slave,change master等)

USAGE

全局权限

无任何权限

SHOW DATABASES

全局权限

查看数据库列表

show databases

CREATE

数据库权限

创建数据库、表

INDEX

对象权限

创建索引(create index)

CREATE VIEW

对象权限

创建视图

CREATE ROUTINE

数据库权限

创建存储过程、函数

DROP

数据库权限

删除表、视图、存储过程、触发器、定时任务

ALTER

对象权限

修改表结构和表的索引

即使没有index权限,也可以使用alter语句添加或删除索引

修改表名称时,同时需要drop权限

ALTER ROUTINE

对象权限

修改存储过程、函数

EVENT

全局权限

创建、删除调度任务

TRIGGER

对象权限

创建触发器的权限

SELECT

对象权限

查询数据

INSERT

对象权限

插入数据

UPDATE

对象权限

更新数据

DELETE

对象权限

删除数据

EXECUTE

对象权限

执行存储过程的权限

REFERENCE

数据库权限

外键引用权限

LOCK TABLES

数据库权限

执行lock tables权限,需要同时对表有select权限

SHOW VIEW

对象权限

查看视图定义(show create view)

一个例子:授权库不一致导致访问报错

1、创建账号并授权
授予账号(cc@%) select和create view的权限。

mysql> create database hello_db_x;
Query OK, 1 row affected (0.01 sec)

mysql> grant select on `hello\_db\_x`.* to 'cc'@'%' identified by '123';
Query OK, 0 rows affected, 1 warning (0.05 sec)

mysql> grant create view, show view on `hello_db_x`.* to 'cc'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> use hello_db_x;
Database changed
mysql> create table tx(a int);
Query OK, 0 rows affected (0.14 sec)

2、使用新账号登陆,创建视图
报没有create view的权限

root@box1 ~]# mysql -ucc -p123
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| hello_db_x         |
+--------------------+
2 rows in set (0.00 sec)

mysql> use hello_db_x;


mysql> show tables;
+----------------------+
| Tables_in_hello_db_x |
+----------------------+
| tx                   |
+----------------------+
1 row in set (0.01 sec)

mysql> select * from tx;
Empty set (0.01 sec)


mysql> create or replace view v_xx as select * from tx;
ERROR 1142 (42000): CREATE VIEW command denied to user 'cc'@'localhost' for table 'v_xx'


mysql> show grants;
+------------------------------------------------------------+
| Grants for cc@%                                            |
+------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'cc'@'%'                             |
| GRANT SELECT ON `hello\_db\_x`.* TO 'cc'@'%'               |
| GRANT CREATE VIEW, SHOW VIEW ON `hello_db_x`.* TO 'cc'@'%' |
+------------------------------------------------------------+

创建视图失败,但是通过show grants,可以看到账号有create view的权限。

3、分析原因

hello_db_x库存在2条授权记录,一条有select权限,但是没有create view权限,一条有create view权限,但是无select权限。

mysql使用没有create view权限的那条授权记录,导致create view失败。

mysql> select host, db, user, select_priv, create_view_priv, show_view_priv from mysql.db where user='cc';
+------+--------------+------+-------------+------------------+----------------+
| host | db           | user | select_priv | create_view_priv | show_view_priv |
+------+--------------+------+-------------+------------------+----------------+
| %    | hello_db_x   | cc   | N           | Y                | Y              |
| %    | hello\_db\_x | cc   | Y           | N                | N              |
+------+--------------+------+-------------+------------------+----------------+

4、解决: 重新授权,库名保持一致(包括转义符)

grant create view, show view on `hello\_db\_x`.* to 'cc'@'%';

select host, db, user, select_priv, create_view_priv, show_view_priv from mysql.db where user='cc';
+------+--------------+------+-------------+------------------+----------------+
| host | db           | user | select_priv | create_view_priv | show_view_priv |
+------+--------------+------+-------------+------------------+----------------+
| %    | hello_db_x   | cc   | N           | Y                | Y              |
| %    | hello\_db\_x | cc   | Y           | Y                | Y              |

账号和权限管理实践

以下是一些关于MySQL账号和权限管理的建议:

  1. 避免无密码和弱密码账号:确保不使用没有密码或者弱密码的账号,可以利用validate_password插件来评估密码的强度,从而保证只有强密码被使用。
  2. 删除匿名用户: 删除所有用户名为空的匿名用户,以防止未经授权的访问。
  3. 最小权限原则: 按需分配权限,给予用户所需的最小权限。例如,对于只需要进行查询的账号,仅授予"select"权限。
  4. 区分业务账号权限:对于业务相关的账号,限制权限仅限于数据操作语言(DML)操作,如"insert"、“update”、“delete”、“select”、“lock tables”。通常不建议使用业务账号执行数据定义语言(DDL)操作(如"create"、“alter”、“drop”),以防止对数据库结构的意外更改。
  5. 创建专用的DBA账号: 为数据库管理员(DBA)创建单独的账号,赋予其DDL权限(如"create"、“drop”、"alter"等)。这种职责分离确保了管理任务与常规业务操作分离,增强了对数据库修改的安全性和控制。

这些措施可以有助于更好地保护MySQL数据库安全,并且有条不紊地管理账号和权限,减少潜在的安全风险。

更多技术信息请查看云掣官网云掣YunChe - 可观测运维专家 | 大数据运维托管 | 云MSP服务

相关推荐

国服停机更新!LOL美服怎么进详细解答

国服停机更新!LOL美服怎么进详细解答嘿,各位召唤师们!是不是国服停机更新,手痒痒想玩玩国际服呢?别担心,我这就来教大家怎么轻松下载并注册英雄联盟LOL的国际服(比如美服、台服),保证让大家一看就懂,...

魔兽WLK:ICC测试服即将开放,玩家苦等1年的玩法,国服完美错过

虽然魔兽世界WLK版本一共有五个阶段,但是玩家们往往会忽略红玉圣殿这个副本,毕竟这个副本的意义就是引出4.0版本,在剧情上与WLK版本没有太大的关系,因此ICC也成为了《经典三部曲》最后一个值得关注的...

国服停机更新!英雄联盟台服怎么进一文详解

国服停机更新!英雄联盟台服怎么进一文详解嘿,小伙伴们!是不是有时候觉得国服停机更新,手痒得不行,想继续享受LOL的乐趣?别急,我这就给大家带来一份超级接地气的英雄联盟LOL国际服游玩攻略!国服停机更新...

国服测试服首日报告:可排随机5人本,收藏品共享,刷牌子换武器

官方发布压测首日收获,创下世界纪录...

云顶之弈S14赛季 测试服版本 4月2日即将上线国服 双人模式大改八排

今天分享下...

射击游戏《无畏契约》国服端游测试服招募开启,11月上旬开测

IT之家10月27日消息,腾讯开启射击竞技游戏《无畏契约》国服测试服先锋招募(PC端),仅限可以有稳定使用电脑参与体验的玩家,截至10月30日。IT之家附招募要求:对游戏测试有兴趣,...

测试服注意:国服18848已经可以正常登陆

最新更新:国服测试服已经可以正常登陆,版本号为18848早期不兼容的解决办法↓(已经用不到啦)注明,这方法是一位叫八神的大神解决的。第一将你的测试服更新到18848.然后打开战网。战网不要退出。下...

教部落玩家如何解决国服测试服登陆报错问题

德拉诺之王国服内测已经开启。但是选择部落的玩家却发现登陆以后以后经常会报错提示错误132。这是因为部落方面的新模型还没有完成,部落的玩家需要将使用新模型的选项关闭。这样就可以正常的游戏了!具体步骤如...

快速匹配开启国服一区测试!确定会取代自选模式

9月18日下午,英雄联盟国服宣布了最新改动,快速匹配模式将于9月19日上午10点至9月26日0点在联盟一区进行限时开放新一轮测试,更多的玩家可以体验到这个新模式了。快速匹配模式是拳头游戏在2023年8...

国服测试服更新公告:开放百级角色建立

国服德拉诺之王测试服最新更新进入,开放了直接建立100级PVE与100级PVP角色的模板,可以直接建立百级角色。要塞也开放了一键升级功能,方便玩家测试体验要塞。运营团队官方公告:我们在今天对《德拉诺之...

6.0测试服:国服测试服务器不兼容解决办法

今日国服测试服更新后服务器出现不兼容问题,造成国服玩家无法登陆。解决办法如下:此次无法登陆原因为游戏版本号错误导致,打开战网后自动更新32M文件后会造成游戏版本号超前,与目前开放版本不相同的问题,此问...

魔兽国服炸服勇士带你进入技术测试(一)

6月6日的通告,正式拉开了国服回归的序幕。经历了几日的等待,终于来到了技术测试环节,胖儿坨坨第一时间等待在战网前准备迎接这盛况的景象。当时太激动了,然后就把巫妖王之怒的动画重温了一遍。那个男人又回来了...

腾讯《暗区突围:无限》端游国服体验服限量招募

IT之家9月24日消息,腾讯游戏今日发文宣布,《暗区突围:无限》端游国服体验服将于10月上线,现开启体验服限量招募。IT之家此前报道,该游戏海外版已于今年8月开启不限号测试,新增前线要...

兔玩网分享下载美服测试客户端登陆国服方法

德拉诺之王国服测试服客户端下载链接,魔兽世界国服6.0内测客户端下载,其实美服和国服的客户端是可以通用,目前小编还没有找到国服的客户端下载,为了满足一些饥渴的玩家,所以小编现将美服客户端下的下载地址以...

英雄联盟手游不限号测试开服活动指南:快速入手丰厚福利

经过广大玩家漫长而热切的期盼,英雄联盟手游国服终于在10月8日开启了不限号测试。而为了回报玩家的久等与支持,英雄联盟手游国服推出了大量内容精彩奖励丰厚的开服活动。刚刚加入游戏的萌新玩家,是否还对复杂多...

取消回复欢迎 发表评论: