MySQL数据库语言三、DCL语句

 😘作者简介:正在努力的99年公司职员。
👊宣言:人生就是B(birth)和D(death)之间的C(choise),做好每一个选择。
🙏创作不易,动动小手给个点赞加关注吧,有什么意见评论区告诉我,一起学习。

目录

前言

DCL语句

权限级别

MySQL用户管理

创建用户

 删除用户

 修改密码

忘记root密码,怎么找回

免登陆操作数据库

MySQL用户授权

语法格式

赋予用户权限测试

创建用户

给sure1用户授权

 测试权限

查看自己权限

查询别人权限

 收回权限

用客户机测试sure1权限


前言

        DCL语句 数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE

DCL语句

权限级别

Global level:所有库,所有表的权限。

Database level:某个数据库中的所有表的权限。

Table level:库中的某个表的权限

Column level:表中的某个字段,的权限。

MySQL用户管理

用户管理这次主要从创建用户、删除用户、修改用户密码来介绍,以及介绍怎么不登录数据库来对数据库进行操作。

创建用户

首先登录到MySQL。

mysql  -uroot   -p'root密码';

语法:create  user    用户名@客户端IP   identified  by   '用户登录密码';

create user sure1@localhost   identified by 'Sure.520';        //创建用户sure1.

sure1:创建的用户的用户名。

localhost:这里是创建本机登录的账号所以填了localhost,也可以填本机ip,如果是创建给客户机登录这里需要填的是客户端的IP。

identified  by :这是关键字后面跟空格加密码

创建好的用户会被记录到mysql库中的user表中。可以通过use mysql进入到mysql库,然后通过show tables;可以看到有user表。

 创建好之后可以通过查看user表的内容来查找到我们刚刚创建的用户。

select user from user;

因为user表中记录了很多内容,只看user列的信息看到刚刚创建的用户sure1在这里可以查到。

 删除用户

语法:drop   user   用户名@客户机ip;

删除刚刚创建的sure1用户。

drop   user   sure1@localhost;

 删除之后,通过查询user表的信息没有sure1,说明删除成功。

 修改密码

这里通过修改root密码来进行操作。

修改密码有两种方式:

1、不登录mysql修改密码(在部署MySQL的时候修改默认root密码使用的方法)

2、登录mysql修改密码。还可以通过修改user表来修改密码。

不登录mysql来修改root密码

语法:mysqladmin  -uroot    -p'旧root密码'    password   '新的root密码'

注意:-p后面紧跟旧密码没有空格,password后面需要跟个空格再写新的密码。

我原本的密码是Sure.520,现在修改为Sure.123

输入完命令后如果没有ERROR提示出现就算成功了。

修改完之后再用原来的Sure.520登录就报错了提示密码错误。

使用新密码Sure.123登录成功了。

 登录MySQL修改密码

语法:alter    user   'root'@'localhost'   identified by  '新密码';

这是centos9/MySQL8.0的语法。

修改完以后需要执行一条命令。

flush    privileges;

命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。MySQL用户数据和权限有修改后,希望在”不重启MySQL服务”的情况下直接生效,那么就需要执行这个命令。通常是在修改ROOT帐号的设置后,怕重启后无法再登录进来,那么直接flush之后就可以看权限设置是否生效。而不必冒太大风险。

 

 这里我又将密码改成了Sure.520

 通过修改user表信息来修改密码在下面的找回root密码来实验。

忘记root密码,怎么找回

当忘记root密码的时候我们需要进行密码破解,要对mysql的配置文件进行修改。

找回root密码需要以下操作:

1、修改mysql配置文件,使mysql启动的时候不加载密码文件,实现免密登录,修改完需要重新mysql服务

2、免密登录mysql后,通过对user表的操作来清空root密码

3、退出mysql将配置文件的免密登录的部分注销,重启mysql服务

4、通过mysqladmin  -uroot    -p' '    password   '新的root密码'   修改root密码。

5、使用新密码登录MySQL

1、修改mysql配置文件

vim   /etc/my.cnf

在[mysqld]下加入一下内容

skip-grant-tables

保存退出重启mysql服务。

systemctl  restart  mysqld

如果重启失败,去检查配置文件,配置文件有错误命令,会导致重启失败。

2、 配置完重启服务之后进行免密登录。

 2.1通过修改user表的root密码列来修改root的密码。

语法:update   mysql.user  set  authentication_string=''  where  user='root'; 

这里要将密码清空。

注意:这里使用alter去修改密码会报错,因为现在是免密登录,是不需要授权密码的,所以系统会报错。

 3、退出mysql进入配置文件将刚刚增加的免密登录的配置注释,重启服务。

\q是退出MySQL。

#skip-grant-tables

重启服务systemctl  restart  mysqld

 

4、修改密码,通过新密码登录 MySQL

 [root@localhost ~]# mysqladmin -uroot -p' '  password 'Sure.666'

在Enter password:直接按回车即可。因为密码刚刚清空了。

 这样我们就找回了我们饿root密码。

免登陆操作数据库

免登陆操作数据库内的内容,不需要登录到MySQL界面来操作数据库,在通过脚本来操作数据库的时候需要用到该操作。

语法:mysql    -u用户名    -p'密码'   -P  MySQL服务端口   -h需要登录的服务器主机   -e  'SQL语句'

出现几个新的选项-P   -h   -e

-P:MySQL的服务端口,默认是3306

-h:MySQL服务器的主机,在后面用MySQL客户端的时候需要写,默认是localhost

-e:后面加空格接'sql语句'

需求:免登陆查看所有的库

 不登录数据库也可以看到所有库,当然也可以进行其他操作。

MySQL用户授权

通过创建用户给用户授权,让用户拥有一些权限来操作数据库,在生产环境中,不可能所有人都是用root账号来操作数据库,这个时候就需要来创建一些用户,并赋予一部分权限来完成日常的工作即可。

语法格式

语法: grant      权限列表  on    库名.表名   to    '用户名'@'客户端主机'    [with option参数];

权限列别:

        all:所有权限,增删改查

        select:查询权限

        select、delete:查询和删除权限

        select(列名):某个字段的查询权限                //     Column level

库名.表名:

        *.*:所有库,所有表的权限                    //Global level

        库名.*:某个库的所有表的权限                //Database level

        库名.表名:某个库某个表的权限                 //Table level

客户端主机:

        %:所有主机

        192.168.79.%:指定网段的主机

        192.168.79.139:指定某个具体主机

with  option:

         WITH   GRANT OPTION:授权选项

        如果这里写了,就代表了该用户可以继续给下一个用户授权,一般授权的时候不给这个权限,因为不方便管理。

赋予用户权限测试

需求:给客户机192.168.79.139的sure1授予对game库的player表的查询权限。

步骤:首先需要先创建sure1的用户

           用root用户给sure1授权

           测试权限。

创建用户

创建192.168.79.139客户端sure1用户

create user sure1@192.168.79.139 identified by 'Sure.123';

注意:这里@后面跟的ip是客户端的ip,这里是192.168.79.139,也就是sure1的账号只有192.168.79.139主机可以使用这个账号登录到服务器的mysql,这里ip是多少,接下来授权的客户端ip就要是多少。

为了验证这个账号的登录权限,在本机测试登录

 提示登录失败,提示访问被拒绝。再在192.168.79.139主机上登录测试。

首先需要在客户端上安装MySQL客户端,只需要安装sql客户端即可。

yum -y install mysql-community-client.x86_64

不不知道具体安装包的名字,可以通过yum  list | grep mysql来查看。

安装完成之后测试使用sure1用户登录mysql服务器的数据库。

mysql -usure1 -p'Sure.123' -h'192.168.79.138'

注意:这里-h后面要跟服务器的IP。否则将报错。

 可以看到登录进来了,并且能够查到两个库,发现其他的库看不到,因为还没有给授权,接下来将对sure1用户进行授权。

给sure1用户授权

切换到192.168.79.138mysql服务器这台主机用root账号登录mysql。

给sure1赋予对game库的player表的查询权限。

grant select on game.player to 'sure1'@'192.168.79.139';

 测试权限

去192.168.79.139主机登录sure1账号测试权限

可以看到game库。

 

也可以查询player表的内容。 

 发现两台主机查看到的game内的表数量不一样。

测试向player内插入数据

提示操作被拒绝。 

查看自己权限

语法:show  grants; 

这就是sure1的权限,只有对game库中的player表查询权限。 

查询别人权限

语法:SHOW GRANTS FOR   用户@'主机地址'

其他主机没有无法查看root的权限。

用MySQL服务器查看root权限

show   grants  for  root@localhost\G;

\G是自动换行的意思。

 收回权限

语法:REVOKE   权限列表   ON   数据库名   FROM   用户名@‘客户端主机’

需求:收回sure1的所有权限

revoke   all privileges  on  game.player  from  sure1@'192.168.79.139';

用客户机测试sure1权限

用192.168.79.139主机测试权限收回情况。

发现已经看不到game库了。回到了刚刚创建完用户的状态。 

查看自己的权限。 

 

 已经没有对数据库操作的权限。


阅读十遍不如操作一遍,一起操作学习吧!!!

  • 11
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sure云小硕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值