数据库
首页 > 数据库> > Mysql的基本操作和用户权限----2021(ZSD版)

Mysql的基本操作和用户权限----2021(ZSD版)

作者:互联网

Group 1: 安装Mysql for window or for linux

(1)从Mysql网站下载软件;

http://downloads.mysql.com/archives/installer/(mysql-installer-community-8.0.12.0.msi)

(2)把它安装在你的电脑上;

(3)设置windows环境路径;

(4)启动Mysql服务器。

 

Group 2:登录Mysql服务器通过以下方法:

(1) HeidiSQL

(2) CMD:Mysql –u username -p

(3)带IP地址的用户创建,然后链接Mysql

 

解决方案:

https://blog.csdn.net/u010026255/article/details/80062153

 

Group 3: mysql下创建一个新用户的方法:

例子:创建用户“movie_user” @”*” identified by'123456';

 

示例代码如下:CREATE USER movie_user @'192.168.23.5' identified BY '123456'

示例代码如下:CREATE USER USER001 @'192.168.1.%' IDENTIFIED BY 'user001'

用户名@‘%’用户可以在任意IP下访问(默认IP地址为%)

修改密码: set password for '用户名'@'IP地址' = '新密码';

示例代码如下:CREATE USER xfx @'%' IDENTIFIED BY 'xfx666'

 

自己修改密码:set password = '123';  

 

这里将用户root的密码改为了123

 

Group 4:grant和revoke

  1. 查看权限:show grants for 用户 @'IP地址'

 

刚开始新建的用户xfx,显示的是usage,即没有访问权限。

2、授权:grant  权限 on 数据库.表 to 用户 @'IP地址';

 # 表示有所有的权限,除了grant这个命令,这个命令是root才有的。

grant all privileges  on db1.t1 to "mjj"@'%';

//all privileges  除grant外的所有权限,

            select          仅查权限

            select,insert   查和插入权限

            ...

            usage                   无访问权限

            alter                   使用alter table

            alter routine           使用alter procedure和drop procedure

            create                  使用create table

            create routine          使用create procedure

            create temporary tables 使用create temporary tables

            create user            

// 使用create user、drop user、rename user和revoke  all privileges

            create view             使用create view

            delete                  使用delete

            drop                    使用drop table

            execute                 使用call和存储过程

            file                    使用select into outfile 和 load data infile

            grant option            使用grant 和 revoke

            index                   使用index

            insert                  使用insert

            lock tables             使用lock table

            process                 使用show full processlist

            select                  使用select

            show databases          使用show databases

            show view               使用show view

            update                  使用update

            reload                  使用flush

            shutdown                使用mysqladmin shutdown(关闭MySQL)

            super                   使用change master、kill、logs、purge、master和set global。还允许mysqladmin 调试登陆

            replication client      服务器位置的访问

            replication slave       由复制从属使用

 


          3、revoke:revoke priv_type on database.table from user

这里展示几个示例(超级用户是root,被赋予或撤销权限的对象是xfx或zzp):

(1)授予权限:

GRANT SELECT,UPDATE ON example.emp TO xfx

GRANT DELETE ON example.emp TO xfx

GRANT UPDATE ON example.emp TO xfx

现在,我们来查看xfx拥有的权限

SHOW GRANTS FOR xfx

 

对用户zzp赋予对emp表的所有权限:

GRANT ALL ON EXAMPLE.emp TO zzp

现在,我们来查看xfx拥有的权限

SHOW GRANTS FOR xfx

 

(2)撤销权限:

REVOKE SELECT ON example.emp FROM  xfx

现在,我们来查看xfx拥有的权限

SHOW GRANTS FOR xfx

 

 

Group 5Role角色

1、创建角色

CREATE ROLE 'app_developer', 'app_read', 'app_write';   --创建了3个角色

2、赋予角色权限

GRANT ALL ON app_db.* TO 'app_developer';   -- 给app_db数据库中所有表的所有权限

GRANT SELECT ON app_db.* TO 'app_read';     -- app_db数据库中所有表的查询权限

GRANT INSERT, UPDATE, DELETE ON app_db.* TO 'app_write';  --app_db数据库中所有表的修改权限

3、赋予账户角色

创建4个用户

CREATE USER 'dev1'@'localhost' IDENTIFIED BY 'dev1pass';

CREATE USER 'read_user1'@'localhost' IDENTIFIED BY 'read_user1pass';

CREATE USER 'read_user2'@'localhost' IDENTIFIED BY 'read_user2pass';

CREATE USER 'rw_user1'@'localhost' IDENTIFIED BY 'rw_user1pass';

 

赋予角色

GRANT 'app_developer' TO 'dev1'@'localhost';

GRANT 'app_read' TO 'read_user1'@'localhost', 'read_user2'@'localhost';

GRANT 'app_read', 'app_write' TO 'rw_user1'@'localhost';

 

4、角色激活

查看当前会话已激活的角色

SELECT CURRENT_ROLE();

设置默认激活的角色

-- 为下面4个用户默认激活所有已拥有的角色

SET  DEFAULT  ROLE  ALL  TO

  'dev1'@'localhost',

  'read_user1'@'localhost',

  'read_user2'@'localhost',

  'rw_user1'@'localhost';

运行时激活:set role app_developer;

 

Group 6: 综合实验

假设有一个员工管理系统包括以下table: emp, dept

  1. 设计两个角色:adminrole为admin角色,另一个角色为employeerole一般员工角色,分别赋予它们对两个表和系统的合理访问权限;

 

 

GRANT select on example.dept to employeerole

 

GRANT select on example.emp to employeerole

 

grant all on example.dept to adminrole WITH GRANT OPTION

grant all on example.emp to adminrole WITH GRANT OPTION 

 

  1. 让两个角色分别包含至少两个用户(也许需要创建user)

CREATE USER admin001 @'%' IDENTIFIED BY 'admin001'

CREATE USER admin002 @'%' IDENTIFIED BY 'admin002'

 

 

CREATE USER employee002 @'%' IDENTIFIED BY 'employee002'

CREATE USER employee001 @'%' IDENTIFIED BY 'employee001'

 

GRANT employeerole TO employee001

GRANT employeerole TO employee002

GRANT adminrole TO admin001

GRANT adminrole TO admin002

 

 

您可能根据角色的合理需求执行以下操作:创建角色、授予角色特权、create用户、授予用户角色、操作数据、验证设置。要求写下整个过程的所有步骤。详细说明该应用程序的安全要求,如何设计角色和用户,如何通过角色管理方法向用户授予相对权限,如何对数据库执行操作,以及如何根据前面的设置验证结果是否正确。

 

由于前面对admin角色赋予的是对emp、dept表的所有权限而且有with grant option,所以下面验证admin001是否有相应的权限:

①激活admin001的admin角色,这里在root登录的情况下,用set default role all to admin001实现

②用admin001账户登录

③验证select、insert、delete、update、grant、revoke权限是否可用。

 

 

 

 

 

下面检验with grant option是否生效:

先用admin001赋予employee001对dept表的update

GRANT update on example.dept TO employee001

 

再去检验employee001是否有该权限:

下面用账户employee001登录mysql

SET role employeerole; #激活角色employrole

UPDATE EXAMPLE.dept SET deptno=11 WHERE deptno=1;

SELECT * FROM EXAMPLE.dept

 

显然,employee001拥有了对dept的update权限。

然后,让admin001收回employee001对dept的update权限:

先用admin001登录mysql

revoke update on example.dept from employee001实现对employee001对dept的update权限的收回

 

下面在employee001登录状态下使用update命令,观察结果:

 

显然,heidisql软件会报错,因为employee001对应的update权限已经被admin001撤销

 

下面,我们检验以下功能是否可以实现!

创建角色、授予角色特权、create用户、授予用户角色

 

首先是创建角色:

这里我们用admin001和employee001分别进行实验:

①admin001:

CREATE role manager 

 

显然,admin001可以创建角色

②employee001:

CREATE role salesman 

 

显然,employee001没有此权限

 

然后是授予角色特权:

①admin001:

GRANT SELECT,DELETE,UPDATE,INSERT on example.emp to manager

接下来检验manager是否有这些权限:

先让admin001撤回employee001的employeerole角色

用的是revoke role employeerole from employee001这一SQL语句

然后刷新数据库,并重新登录employee001

此时employee001已经没有角色了

 

这时,用admin001赋予employee001用户manager角色

GRANT manager TO employee001

接下来用employee001登录,激活角色后,查看拥有的权限

 

 

 

这里只检验employee001是否有对emp表的select权限:

 

显然,是拥有的

②employee001:

由于employee001不能创建角色,所以也不能给角色赋予特权,这里就不赘述操作步骤

 

接下来,检验的是创建用户权限:

①admin001:

CREATE USER zzp IDENTIFIED BY 'zzp666'

 

显然,可以创建

②employee001:

CREATE USER xyy IDENTIFIED BY 'xyy666'

 

报错,说明employee001不能create user

标签:D版,角色,GRANT,employee001,----,基本操作,admin001,权限,app
来源: https://blog.csdn.net/zzp666555/article/details/116428917