mysql数据库中的权限列表,mysql数据库权限中哪些属于服务器管理权限

本文目录一览:

MySQL的权限有哪些

mysql常用的权限:

CREATE 数据库、表或索引创建权限

DROP 数据库或表删除权限

GRANT OPTION 数据库、表或保存的程序权限

REFERENCES 数据库或表

ALTER 更改表,比如添加字段、索引等

DELETE 删除数据权限

INDEX 索引权限

INSERT 插入权限

SELECT 查询权限

UPDATE 更新权限

CREATE VIEW 视图,创建视图权限

SHOW VIEW 视图,视图权限

ALTER ROUTINE 存储过程,更改存储过程权限

CREATE ROUTINE 存储过程,创建存储过程权限

EXECUTE 存储过程,执行存储过程权限

mysql数据库有几张授权表

mysql授权表共有5个表:user、db、host、tables_priv和columns_priv。

授权表的内容有如下用途:

·user表

user表列出可以连接服务器的用户及其口令,并且它指定他们有哪种全局(超级用户)权限。在user表启用的任何权限均是全局权限,并适用于所有数据库。例如,如果你启用了DELETE权限,在这里列出的用户可以从任何表中删除记录,所以在你这样做之前要认真考虑。

·db表

db表列出数据库,而用户有权限访问它们。在这里指定的权限适用于一个数据库中的所有表。

·host表

host表与db表结合使用在一个较好层次上控制特定主机对数据库的访问权限,这可能比单独使用db好些。这个表不受GRANT和REVOKE语句的影响,所以,你可能发觉你根本不是用它。

·tables_priv表

tables_priv表指定表级权限,在这里指定的一个权限适用于一个表的所有列。

·columns_priv表

columns_priv表指定列级权限。这里指定的权限适用于一个表的特定列。

MySQL 数据库,如何分角色权限建表?

角色一直存在各个数据库中,比如 SQL Server、Oracle 等,MySQL 自从版本 8.0 release,引入了角色这个概念。

角色的概念

角色就是一组针对各种数据库权限的集合。比如,把一个角色分配给一个用户,那这个用户就拥有了这个角色包含的所有权限。一个角色可以分配给多个用户,另外一个用户也可以拥有多个角色,两者是多对多的关系。不过 MySQL 角色目前还没有提供类似于其他数据库的系统预分配的角色。比如某些数据库的 db_owner、 db_datareader 、 db_datawriter 等等。那接下来我分几个方面,来示例说明角色的使用以及相关注意事项。

示例 1:一个完整角色的授予步骤

用管理员创建三个角色:db_owner, db_datareader, db_datawriter

mysql create role db_owner,db_datareader,db_datawriter;

Query OK, 0 rows affected (0.02 sec)

mysql grant all on ytt_new.* to db_owner;

Query OK, 0 rows affected (0.01 sec)

mysql grant select on ytt_new.* to db_datareader;

Query OK, 0 rows affected (0.01 sec)

mysql grant insert,delete,update on ytt_new.* to db_datawriter;

Query OK, 0 rows affected (0.01 sec)

创建三个普通用户,分别为 ytt1、ytt2、ytt3。mysql create user ytt1 identified by ‘ytt’,ytt2 identified by ‘ytt’,ytt3 identified by ‘ytt’;Query OK, 0 rows affected (0.01 sec)

分别授予这三个用户对应的角色。

— 授权角色

mysql grant db_owner to ytt1;

Query OK, 0 rows affected (0.02 sec)

— 激活角色

mysql set default role db_owner to ytt1;

Query OK, 0 rows affected (0.00 sec)

mysql grant db_datareader to ytt2;

Query OK, 0 rows affected (0.01 sec)

mysql set default role db_datareader to ytt2;

Query OK, 0 rows affected (0.01 sec)

mysql grant db_datawriter to ytt3;

Query OK, 0 rows affected (0.01 sec)

mysql set default role db_datawriter to ytt3;

Query OK, 0 rows affected (0.01 sec)

以上是角色授予的一套完整步骤。那上面有点非常规的地方是激活角色这个步骤。MySQL 角色在创建之初默认是没有激活的,也就是说创建角色,并且给一个用户特定的角色,这个用户其实并不能直接使用这个角色,除非激活了才可以。

示例 2:一个用户可以拥有多个角色

— 用管理员登录并且创建用户

mysql create user ytt4 identified by ‘ytt’;

Query OK, 0 rows affected (0.00 sec)

— 把之前的三个角色都分配给用户ytt4.

mysql grant db_owner,db_datareader,db_datawriter to ytt4;

Query OK, 0 rows affected (0.01 sec)

— 激活用户ytt4的所有角色.

mysql set default role all to ytt4;

Query OK, 0 rows affected (0.02 sec)

— ytt4 用户登录

root@ytt-pc:/var/lib/mysql# mysql -uytt4 -pytt -P3304 -hytt-pc

— 查看当前角色列表

mysql select current_role();

+——————————————————–+

| current_role()                                         |

+——————————————————–+

| `db_datareader`@`%`,`db_datawriter`@`%`,`db_owner`@`%` |

+——————————————————–+

1 row in set (0.00 sec)

— 简单创建一张表并且插入记录, 检索记录,完了删掉这张表

mysql use ytt_new

Database changed

mysql create table t11(id int);

Query OK, 0 rows affected (0.05 sec)

mysql insert into t11 values (1);

Query OK, 1 row affected (0.02 sec)

mysql select * from t11;

+——+

| id   |

+——+

|    1 |

+——+

1 row in set (0.00 sec)

mysql drop table t11;

Query OK, 0 rows affected (0.04 sec)

示例 3:用户在当前 session 里角色互换

其实意思是说,用户连接到 MySQL 服务器后,可以切换当前的角色列表,比如由 db_owner 切换到 db_datareader。

— 还是之前的用户ytt4, 切换到db_datareader

mysql set role db_datareader;

Query OK, 0 rows affected (0.00 sec)

mysql select current_role();

+———————+

| current_role()      |

+———————+

| `db_datareader`@`%` |

+———————+

1 row in set (0.00 sec)

— 切换后,没有权限创建表

mysql create table t11(id int);

ERROR 1142 (42000): CREATE command denied to user ‘ytt4’@’ytt-pc’ for table ‘t11’

— 切换到 db_owner,恢复所有权限。

mysql set role db_owner;

Query OK, 0 rows affected (0.00 sec)

mysql create table t11(id int);

Query OK, 0 rows affected (0.04 sec)

示例 4:关于角色的两个参数

activate_all_roles_on_login:是否在连接 MySQL 服务时自动激活角色mandatory_roles:强制所有用户默认角色

— 用管理员连接MySQL,

— 设置默认激活角色

mysql set global activate_all_roles_on_login=on;

Query OK, 0 rows affected (0.00 sec)

— 设置强制给所有用户赋予角色db_datareader

mysql set global mandatory_roles=’db_datareader’;

Query OK, 0 rows affected (0.00 sec)

— 创建用户ytt7.

mysql create user ytt7;

Query OK, 0 rows affected (0.01 sec)

— 用 ytt7登录数据库

root@ytt-pc:/var/lib/mysql# mysql -uytt7 -P3304 -hytt-pc

mysql show grants;

+——————————————-+

| Grants for ytt7@%                         |

+——————————————-+

| GRANT USAGE ON *.* TO `ytt7`@`%`          |

| GRANT SELECT ON `ytt_new`.* TO `ytt7`@`%` |

| GRANT `db_datareader`@`%` TO `ytt7`@`%`   |

+——————————————-+

3 rows in set (0.00 sec)

示例 5 :create role 和 create user 都有创建角色权限,两者有啥区别?

以下分别创建两个用户 ytt8、ytt9,一个给 create role,一个给 create user 权限。

— 管理员登录,创建用户ytt8,ytt9.

mysql create user ytt8,ytt9;

Query OK, 0 rows affected (0.01 sec)

mysql grant create role on *.* to ytt8;

Query OK, 0 rows affected (0.02 sec)

mysql grant create user on *.* to ytt9;

Query OK, 0 rows affected (0.01 sec)

— 用ytt8 登录,

root@ytt-pc:/var/lib/mysql# mysql -uytt8 -P3304 -hytt-pc

mysql create role db_test;

Query OK, 0 rows affected (0.02 sec)

— 可以创建角色,但是不能创建用户

mysql create user ytt10;

ERROR 1227 (42000): Access denied; you need (at least one of) the CREATE USER privilege(s) for this operation

mysql \q

Bye

— 用ytt9 登录

root@ytt-pc:/var/lib/mysql# mysql -uytt9 -P3304 -hytt-pc

— 角色和用户都能创建

mysql create role db_test2;

Query OK, 0 rows affected (0.02 sec)

mysql create user ytt10;

Query OK, 0 rows affected (0.01 sec)

mysql \q

Bye

那这里其实看到 create user 包含了 create role,create user 即可以创建用户,也可以创建角色。

示例 6:MySQL 用户也可以当角色来用

— 用管理员登录,创建用户ytt11,ytt12.

mysql create user ytt11,ytt12;

Query OK, 0 rows affected (0.01 sec)

mysql grant select on ytt_new.* to ytt11;

Query OK, 0 rows affected (0.01 sec)

— 把ytt11普通用户的权限授予给ytt12

mysql grant ytt11 to ytt12;

Query OK, 0 rows affected (0.01 sec)

— 来查看 ytt12的权限,可以看到拥有了ytt11的权限

mysql show grants for ytt12;

+———————————–+

| Grants for ytt12@%                |

+———————————–+

| GRANT USAGE ON *.* TO `ytt12`@`%` |

| GRANT `ytt11`@`%` TO `ytt12`@`%`  |

+———————————–+

2 rows in set (0.00 sec)

— 在细化点,看看ytt12拥有哪些具体的权限

mysql show grants for ytt12 using ytt11;

+——————————————–+

| Grants for ytt12@%                         |

+——————————————–+

| GRANT USAGE ON *.* TO `ytt12`@`%`          |

| GRANT SELECT ON `ytt_new`.* TO `ytt12`@`%` |

| GRANT `ytt11`@`%` TO `ytt12`@`%`           |

+——————————————–+

3 rows in set (0.00 sec)

示例 7:角色的撤销

角色撤销和之前权限撤销类似。要么 revoke,要么删除角色,那这个角色会从所有拥有它的用户上移除。

— 用管理员登录,移除ytt2的角色

mysql revoke db_datareader from ytt2;

Query OK, 0 rows affected (0.01 sec)

— 删除所有角色

mysql drop role db_owner,db_datareader,db_datawriter;

Query OK, 0 rows affected (0.01 sec)

— 对应的角色也从ytt1上移除掉了

mysql show grants for ytt1;

+———————————-+

| Grants for ytt1@%                |

+———————————-+

| GRANT USAGE ON *.* TO `ytt1`@`%` |

+———————————-+

1 row in set (0.00 sec)

至此,我分了 7 个目录说明了角色在各个方面的使用以及注意事项,希望对大家有帮助。

如何用phpmyadmin设置mysql数据库用户的权限

首先打开phpMyadmin;

点击用户菜单;

在任意用户菜单上点击“编辑权限”;

修改密码点击执行就OK了

权限意思可以对照下面翻译:

数据:

SELECT:允许读取数据。

INSERT:允许插入和替换数据。

UPDATA:允许更改数据。

DELETE:允许删除数据。

FILE:允许从文件中导入数据以及将数据导出至文件。

结构:

CREATE:允许创建新数据库和表。

ALTER:允许修改现有表的结构。

INDEX:允许创建和删除索引。

DROP:允许删除数据库和表。

CREATE TEMPORARY TABLES:允许创建暂时表。

CREATE VIEW:允许创建新的意见。

SHOW VIEW:显示创建的看法。

CREATE ROUTINE:允许创建存储过程。

ALTER ROUTINE:允许改变和下降存储过程。

EXECUTE:允许许执行存储过程。

管理:

GRANT:允许添加用户和权限,而不允许重新载入权限表。

SUPER:允许在达到最大允许数目时仍进行连接。

PROCESS:允许查看进程列表中的完整查询。

RELOAD:允许重新载入服务器设置并刷新服务器的缓存。

SHUTDOWN:允许关闭服务器。

SHOW DATABASES:允许访问完整的数据库列表。

LOCK TABLES:允许锁住当前线索的表。

REFERENCES:在此版本的 MySQL 中无效。

REPLICATION CLIENT:用户有权询问附属者/控制者在哪里。

REPLICATION SLAVE:回复附属者所需。

CREATE USER:允许创建,下降和重新命名的用户帐户。

mysql用户操作数据库的全部权限有哪些

MySQL中所有使用者的权限是记录在mysql这个数据库的users资料表中

所以你只要先use mysql

再SELECT * FROM users 你可以看到所有的使用者权限

有关db的数据是记录在Db(大小写要注意)这个数据表中

所以只要呼叫出Db的资料 SELECT * FROM Db 就可以看到你要的答案

或者你可以用 SELECT * FROM Db WHERE Db=’phplampDB’找出你要的答案

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/198621.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-04 10:26
下一篇 2024-12-04 10:26

相关推荐

  • Python 常用数据库有哪些?

    在Python编程中,数据库是不可或缺的一部分。随着互联网应用的不断扩大,处理海量数据已成为一种趋势。Python有许多成熟的数据库管理系统,接下来我们将从多个方面介绍Python…

    编程 2025-04-29
  • openeuler安装数据库方案

    本文将介绍在openeuler操作系统中安装数据库的方案,并提供代码示例。 一、安装MariaDB 下面介绍如何在openeuler中安装MariaDB。 1、更新软件源 sudo…

    编程 2025-04-29
  • 数据库第三范式会有删除插入异常

    如果没有正确设计数据库,第三范式可能导致删除和插入异常。以下是详细解释: 一、什么是第三范式和范式理论? 范式理论是关系数据库中的一个规范化过程。第三范式是范式理论中的一种常见形式…

    编程 2025-04-29
  • leveldb和unqlite:两个高性能的数据库存储引擎

    本文将介绍两款高性能的数据库存储引擎:leveldb和unqlite,并从多个方面对它们进行详细的阐述。 一、leveldb:轻量级的键值存储引擎 1、leveldb概述: lev…

    编程 2025-04-28
  • Python怎么导入数据库

    Python是一种高级编程语言。它具有简单、易读的语法和广泛的库,让它成为一个灵活和强大的工具。Python的数据库连接类型可以多种多样,其中包括MySQL、Oracle、Post…

    编程 2025-04-28
  • 如何选择MySQL服务器文件权限

    MySQL是一种流行的关系型数据库管理系统。在安装MySQL时,选择正确的文件权限是保证安全和性能的重要步骤。以下是一些指导您选择正确权限的建议。 一、权限选择 MySQL服务器需…

    编程 2025-04-27
  • Think-ORM数据模型及数据库核心操作

    本文主要介绍Think-ORM数据模型建立和数据库核心操作。 一、模型定义 Think-ORM是一个开源的ORM框架,用于简化在PHP应用中(特别是ThinkPHP)与关系数据库之…

    编程 2025-04-27
  • 如何使用Python将CSV文件导入到数据库

    CSV(Comma Separated Values)是一种可读性高、易于编辑与导入导出的文件格式,常用于存储表格数据。在数据处理过程中,我们有时需要将CSV文件导入到数据库中进行…

    编程 2025-04-27
  • Python批量导入数据库

    本文将介绍Python中如何批量导入数据库。首先,对于数据分析和挖掘领域,数据库中批量导入数据是一个必不可少的过程。这种高效的导入方式可以极大地提高数据挖掘、机器学习等任务的效率。…

    编程 2025-04-27
  • Activiti 6自动部署后不生成数据库act_hi_*的解决方法

    本文将从多个方面详细阐述Activiti 6自动部署后不生成数据库act_hi_*的问题,并提供对应的代码示例。 一、问题分析 在使用Activiti 6部署流程后,我们发现act…

    编程 2025-04-27

发表回复

登录后才能评论