首页 > 数据库 >第15节-MySQL用户权限

第15节-MySQL用户权限

时间:2022-11-27 23:46:10浏览次数:51  
标签:test1 password 15 -- 用户 user MySQL 权限

1、用户管理

1.1、查询用户

use mysql

-- 5.6以下的版本
select host,user,password from user;

-- 5.7以上的版本
select host,user,authentication_string from user;

1.2、创建用户

1.2.1、create user

-- 创建用户:test1,test2 , 此方式创建默认是无权限,只允许登陆
-- 单个用户创建
create user test1@'%' identified by 'test1';

-- 多个用户创建
create user test1@'%' identified by 'test1',test2@'%' identified by 'test2';

1.2.2、grant

-- 创建两个用户test3和test4,同时设置授权
-- 创建单个户
grant select on cjgl.* to 'test3'@'%' identified by 'test3';

-- 同时创建多个用户
grant select on cjgl.* to 'test3'@'%' identified by 'test3','test4'@'%' identified by 'test4';

1.2.3、手动插入insert into

-- 5.6以下版本
insert into mysql.user(host,user,password,ssl_cipher,x509_issuer,x509_subject) values ('%','test5',password('test5'),'','','');

-- 5.7以上版本
insert into mysql.user(host,user,authentication_string,ssl_cipher,x509_issuer,x509_subject) values ('%','test5',password('test5'),'','','');

-- 手动插入,必须要执行刷新,才生效
flush privileges;

1.3、修改用户名

-- 将test1,test2,修改用户名为:user1,user2
-- 修改单个用户
rename user 'test1'@'%' to 'user1'@'%';

-- 修改多个用户
rename user 'test1'@'%' to 'user1'@'%','test2'@'%' to 'user2'@'%';

1.4、修改用户密码

1.4.1、已知root密码,修改root的密码

-- 已知root密码,进行root密码的修改
-- -p password root 指定新的密码
[root@localhost ~]# mysqladmin -S /usr/local/mysql/data/mysql.sock -uroot -p password root
Enter password: -- 输入原因的密码 
mysqladmin: [Warning] Using a password on the command line interface can be insecure.

1.4.2、登陆root,修改指定用户名的密码

-- 修改user1的密码
set password for 'user1'@'%'=password('new_pwd');

1.4.3、使用update修改用户密码

-- 5.6以下的版本
update mysql.user set password=password('user2') where user='user2' and host='%';
flush privileges;

-- 5.7以上的版本
update mysql.user set authentication_string=password('user2') where user='user2' and host='%';
flush privileges;

1.4.4、忘记root密码的处理方法

1、增加忽略权限的配置
[root@localhost ~]# cat /etc/my.cnf
[mysqld]
-- 增加此行
skip-grant-tables

2、重启mysql服务

3、免密码,登陆mysql

4、使用update修改密码
update mysql.user set authentication_string=password('root123') where user='root' and host='localhost';
flush privileges;

5、删除配置信息skip-grant-tables,重启mysql服务

1.5、删除用户

1.5.1、删除方式1:drop user

-- 删除user1、user2用户
drop user user1@'%',user2@'%';

1.5.2、删除方式2:delete

-- 删除test5用户
delete from mysql.user where user='test5' and host='%';
flush privileges;

2、权限管理

2.1、权限介绍

1、什么是权限?
权限是指登录到MySQL服务器的用户,能够对数据库对象执行何种操作的规则集合。
所有的用户权限都存储在mysq1 数据库的6个权限表中,在MySQL启动时,服务器会将数据库中的各种权限信息读入到内存,你确定用户可进行的操作。

2、权限的好处
为用户分配合理的权限可以有效保证数据库的安全性,不合理的授权会使数据库存在安全隐患。


3、MySQL的权限类型
3.1、全局层级:使用ON *.*语法赋予权限。
3.2、数据库层级:使用ON db_name.*语法赋予权限。
3.3、表层级:使用ON db_name.tb1_name语法赋予权限。
3.4、列层级:使用SELECT(co11,co12…)、INSERT(co11 , co12…)和UPDATE(co11,co12…)语法授予权限。
3.5、存储过程﹑函数级:使用execute on procedure或execute on function语法授予权限。

2.2、权限管理

2.2.1、查看权限

show grants for test1@'%';
+-----------------------------------+
| Grants for test1@%                |
+-----------------------------------+
| GRANT USAGE ON *.* TO 'test1'@'%' | -- 默认权限
+-----------------------------------+

2.2.2、分配权限

-- 1、分配test1用户,具有增删改查的权限
grant select,insert,delete,update on cjgl.* to test1@'%';

-- 查询分配结果
mysql> show grants for test1@'%';
+-----------------------------------------------------------------+
| Grants for test1@%                                              |
+-----------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'test1'@'%'                               |
| GRANT SELECT, INSERT, UPDATE, DELETE ON `cjgl`.* TO 'test1'@'%' |
+-----------------------------------------------------------------+


-- 2、分配test2用户,只能修改某几列的数
grant update(ssex,age),select on cjgl.student to test2@'%';

mysql> show grants for test2@'%';
+-------------------------------------------------------------+
| Grants for test2@%                                          |
+-------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'test2'@'%'                           |
| GRANT UPDATE (age, ssex) ON `cjgl`.`student` TO 'test2'@'%' |
+-------------------------------------------------------------+


-- 3、分配执行存储过程的权限

-- 创建一个存储过程
delimiter $$
create procedure getStudentNames() 
READS SQL DATA
begin
select sname from student limit 5;
end$$

-- 给test1用户分配,执行getStudentNames存储过程的权限
grant execute on procedure cjgl.getStudentNames to 'test1'@'%';

2.2.3、回收权限

-- 回收存储过程的权限
revoke execute on procedure cjgl.getStudentNames from 'test1'@'%';

-- 回收select 权限
revoke select on cjgl.* from 'test1'@'%';

-- 回收所有权限
revoke all privileges,grant option from 'test1'@'%';

 

标签:test1,password,15,--,用户,user,MySQL,权限
From: https://www.cnblogs.com/ygbh/p/16924628.html

相关文章

  • mysql添加远程连接功能
    有些情况,我们需要让测试服务器的本地数据库能被外部访问,方便本地数据库可视化工具对其数据的管理。但是,这也带来了一些风险,若被黑客知道了你的服务器IP和数据库账号密码,则......
  • 解决JDBC与Mysql中文乱码现象
    在用JDBC连接数据库进行打印输出的操作的时候,出现了中文乱码的问题。此时Mysql和网页状况如下:Mysql乱成一窝粥。网页的情况也是不容乐观……......
  • 14-权限修饰符和代码块
    权限修饰符权限修饰符的分类理解权限修饰符的使用规则代码块局部代码块构造代码块当多个构造方法中有重复的代码时,我们可以写到构造代码......
  • 网络编程及数据库MySQL总结
    目录网络编程并发知识网络编程知识网络编程软件开发架构计算机网络的相关专业名词OSI七层协议物理连接层数据链路层网络层传输层应用层socket模块黏包现象struct模块并发编......
  • MySQL进阶实战4,MySQL索引详解,下篇
    一、索引索引是存储引擎用于快速查找记录的一种数据结构。我觉得数据库中最重要的知识点,就是索引。存储引擎以不同的方式使用B-Tree索引,性能也各有不同,各有优劣。例如MyI......
  • MySql回表以及产生原因
    MySql回表以及产生原因在SQL优化里面经常提到,如在非主键索引的情况下尽量避免使用select*from;究其原因就是今天我要记录的Mysql回表查询。Mysql回表指的是在InnoDB存储......
  • MySQL进阶实战6,缓存表、视图、计数器表
    一、缓存表和汇总表有时提升性能最好的方法是在同一张表中保存衍生的冗余数据,有时候还需要创建一张完全独立的汇总表或缓存表。缓存表用来存储那些获取很简单,但速度较慢的数......
  • Centos7 yum 安装mysql8.0
    1.去mysql官网下载yum存储库包https://dev.mysql.com/downloads/repo/yum/  这里本人很早之前就下载过,就不重复下载了 2.安装mysqlyum......
  • MySQL InnoDB存储引擎索引:数据结构与算法原理和优化概述
    大家早上好!今天我为大家讲解的是MySQLInnoDB存储引擎索引的数据结构与算法原理和优化概述,大致分为这个部分分别给大家进行介绍。首先我们来看一下MySQL整体的架构,MySQL大......
  • 数据库MySQL
    目录数据库MySQL一、数据库基础知识以及典型数据库MySQL简介1、存储数据的演变史2、数据库软件的应用史3.数据库的本质4.数据库的分类5.MySQL简介6.MySQL基本使用7.制作系......