首页 > 编程知识 正文

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

时间:2023-12-24 13:45:39 阅读:321919 作者:WUKS

本文目录一览:

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'找出你要的答案

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。