MySQL 数据库管理(一)(用户与授权)

数据库应用 专栏收录该内容
27 篇文章 0 订阅


前言

  • 在企业信息化的过程中,数据库中库和表都会大量存在,需要分配给管理者核实的权限进行操作
  • 合理地分配权限,可以使数据库管理井然有序,各个管理者只需要关注自己负责的内容,也可避免误操作对系统造成损失

一、用户与授权

  • 数据库是信息系统中非常重要的一个环节,合理高效地对它进行管理是很重要的工作
  • 通常是由总管理员创建不同的管理账户,然后分配不同的操作权限,把这些账户交给相应的管理人员使用

1.用户管理

1.1 新建用户

CREATE USER '用户名'@'来源地址' [IDENTIFIED BY [PASSWORD] '密码'];
  • 用户名:将要创建的用户名
  • 来源地址:
    • 指定新创建的用户可在哪些主机上登录,可使用 IP 地址、网段、主机名的形式
    • 本地用户可用 localhost
    • 如果想让该用户可以从任意远程主机登录,可用通配符 %
  • 密码:
    • MySQL 5.7 版本启用了密码增强插件,新密码必须符合密码负载型要求,用户的登录密码不能为空
    • 密码通常是需要经过加密处理再写入数据库,在不使用 password 关键字时,可以使用明文密码,直接输入"密码",插入到数据库时由 MySQL 自动加密
    • 如果使用 password 关键字,可以直接插入密文,MySQL 不再进行加密处理
    • 若使用加密密码,需要先使用select password(‘密码’); 获取密文,再在语句中添加 password ‘密文’
    • 若省略“identified by”部分,则用户的密码将为空(不建议使用)
create user 'wangyi'@'localhost' identified by '123123';

select password('123123');

create user 'lisi'@'localhost' identified by password 

mark
mark

1.2 查看用户信息

创建后的用户保存在 mysql 数据库的 user 表里

USE mysql;

SELECT User,authentication_string,Host from user;

mark

1.3 重命名用户

RENAME USER 'wangyi'@'localhost' TO 'wangsan'@'localhost';

select user,authentication_string,host from user;

mark

1.4 删除用户

DROP USER 'wanger'@'localhost';

select user,authentication_string,host from user;

mark

1.5 给用户设置密码

1.5.1 修改当前用户登录密码

set password = password('zxc123');

quit

mysql -u root -p

mark

1.5.2 修改其他用户密码

set password for 'wangsan'@'localhost' = PASSWORD('zxc123');

use mysql;

select user,authentication_string,host from user;

mark
mark

1.6 忘记 root 密码的解决办法

  • 使用 MySQL 时,如果忘记了其他用户的密码,可以使用 root 用户重新设置
  • 但是如果忘记 root 的密码,就需要采用特殊的方法进行操作
#修改 /etc/my.cnf 配置文件,可不使用密码直接登录到 mysql
vim /etc/my.cnf
[mysqld]
skip-grant-tables
#添加,使登录mysql不使用授权表
systemctl restart mysqld


mysql
#可直接登录

mark
mark

#使用 update 修改 root 密码,刷新数据库
UPDATE mysql.user SET AUTHENTICATION_STRING = PASSWORD('123123') where user='root';
FLUSH PRIVILEGES;
quit

#再去删除之前在 /etc/my.cnf 里新添加的内容,并重启服务

mysql -uroot -p123123

mark

2.授权控制

  • 在 MySQL 中,权限设置非常重要,分配权限可以清晰地划分责任
  • 管理人员只需要关注自己的任务即可,最重要的是保证系统数据的安全

2.1 授予权限

  • 权限控制主要是处于安全因素,因此需要遵循以下几个经验原则:
    • 只授予能满足需要的最小权限,防止用户误操作和干坏事
    • 创建用户的时候限制用户的登录主机,一般是限制成指定 IP 或内网 IP 段
    • 初始化数据库时删除没有密码的用户,因为安装完数据库时会自动创建一些用户,这些用户默认没有密码
    • 为每个用户设置满足密码复杂度的密码
    • 定期清理不需要的用户,如回收权限或删除用户
  • 命令格式及用法如下:
GRANT语句:专门用来设置数据库用户的访问权限。当指定的用户名不存在时,GRANT语句将会创建新的用户;当指定的用户名存在时,GRANT 语句用于修改用户信息。

GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'来源地址' [IDENTIFIED BY '密码'];

#权限列表:用于列出授权使用的各种数据库操作,以逗号进行分隔,如“select,insert,update”;使用“all”表示所有权限,可授权执行任何操作

#数据库名.表名:用于指定授权操作的数据库和表的名称,其中可以使用通配符“*”。*例如,使用“xcf.*”表示授权操作的对象为 xcf 数据库中的所有表

#'用户名@来源地址':用于指定用户名称和允许访问的客户机地址,即谁能连接、能从哪里连接;来源地址可以是域名、IP 地址,还可以使用“%”通配符,表示某个区域或网段内的所有地址,如“%.xcf.com”、“192.168.126.%”等

#IDENTIFIED BY:用于设置用户连接数据库时所使用的密码字符串;在新建用户时,若省略“IDENTIFIED BY”部分, 则用户的密码将为空
  • 实例:允许用户wangsan在本地查询 class 数据库中所有表的数据记录,但禁止查询其他数据库中的表的记录
GRANT select on class.* to 'wangsan'@'localhost' identified by '123123';

quit;

mysql -uwangsan -p123123

show databases;

use information_schema;
show tables;
select * from INNODB_SYS_TABLESTATS;

mark
mark
mark
mark

  • 允许用户wangsan在本地远程连接 mysql ,并拥有所有权限
quit

mysql -u root -p123123
GRANT ALL PRIVILEGES ON *.* TO 'wangwu'@'localhost' IDENTIFIED BY '123456';
flush privileges;
quit

mysql -uwangsan -p123123
show databases;
use class;
show tables;
select * from test01

mark
mark
mark

2.2 查看权限

SHOW GRANTS FOR 用户名@来源地址;

例:
show grants for 'wangsan'@'localhost';

mark

2.3 撤销权限

REVOKE 权限列表 ON 数据库名.表名 FROM 用户名@来源地址;

例:
quit

mysql -uroot -p123123
show grants for 'wangsan'@'localhost';
revoke select on "class".* from 'wangsan'@'localhost';

show grants for 'wangsan'@'localhost';

flush privileges;


#撤销权限后,该用户只保留登录权限

mark

  • 3
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
<span style="font-size:14px;">一、课程简介</span><br /><p> <span style="font-size:14px;"><span style="color:#E56600;">『Java学习指南系列』</span>的第8篇教程 ,介绍MySQL数据库的安装使用,常见SQL语句,以及使用JDBC进行数据库开发的技术。</span> </p> <p> <span style="font-size:14px;"><br /></span> </p> <p> <span style="font-size:14px;">二、主要内容 </span> </p> <p> <span style="font-size:14px;">* MySQL的安装和使用</span> </p> <p> <span style="font-size:14px;">* 常用SQL语句,增删改查操作</span> </p> <p> <span style="font-size:14px;">* 高级SQL查询,多表关联查询</span> </p> <p> <span style="font-size:14px;">* 表的设计:主键,索引,内连接外连接,外键</span><span style="font-size:14px;"> </span> </p> <p> <span style="font-size:14px;">* MySQL配置管理: 用户授权,远程访问,备份还原</span> </p> <p> <span style="font-size:14px;">* JDBC连接: 使用JDBC连接数据库,执行增删改查操作</span> </p> <span style="font-size:14px;">* 基于JDBC数据库框架的设计(afsql框架),以此阐述数据库框架的设计原理</span><br /><p> <span style="font-size:14px;">* JDBC连接池,JDBC数据库开发的必备技术</span> </p> <p> <span style="font-size:14px;">* 数据库事务 Transaction 的支持 </span> </p> <p> <span style="font-size:14px;">* SQL的转义,数据库注入攻击的预防</span> </p> <p> <span style="font-size:14px;">* 数据库的动态访问:获取数据库和表的结构,根据表的结构自动生成POJO</span> </p> <p> <span style="font-size:14px;"><br /></span> </p> <p> <span style="font-size:14px;">三、课程体系</span> </p> <p> <span style="font-size:14px;color:#E56600;">〖Java学习指南</span><span style="font-size:14px;color:#E56600;">系列</span><span style="font-size:14px;"><span style="color:#E56600;">〗</span>:包含入门与进阶语法,Swing桌面开发,安卓开发,JavaFX开发,网络通信Socket,数据结构与算法等课程。</span> </p> <p> <span style="font-size:14px;color:#E56600;">〖网站开发</span><span style="font-size:14px;color:#E56600;">系列</span><span style="font-size:14px;"><span style="color:#E56600;">〗</span>:包含网页基础、网站入门、数据库、网站中级、FreeMarker、网站高级、项目应用、MyBatis、Redis等课程。</span> </p>
相关推荐
©️2020 CSDN 皮肤主题: 护眼 设计师:闪电赇 返回首页

打赏

Xucf1

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值