本系列学习笔记主要讲如下几个方面;

本文笔记【三:mysql登录】【四:账户权限设置】【五:mysql数据库安全配置】

目录总结如下

(2)查看
  show grants for repl@192.168.135.159;
(3)登录   【1】mysql -u $user -p $password -P $port -h $ip
 SQL语句:SELECT  、INSERT 、UPDATE 、 DELETE 、 INDEX

  存储过程:CREATE ROUTINE 、ALTER ROUTINE 、EXECUTE

  管理权限:SUPER 、RELOAD 、SHOW DATABASE 、SHUTDOWN  、GRANT OPTION

(4.1)mysql.user表:insert into mysql.user(user,host,password) values('test2','localhost',password(''));

(4.2)常规创建:create user test1@'%' identified by '';

(4.3)授权新建:grant all privileges on *.* to 'test2'@'localhost' identified by ''; 
#记得,上述3种操作后,想要立马生效,记得 flush privileges;(刷新权限)
#给现有账户授权,如果账户不存在则默认会新建(前提是运行该语句的用户权限足够大,这里我用的root),注意(4.3)该方法在8.0以后版本已经不适用
(4.5)删除用户   【1】删除mysql.user表的数据:delete from mysql.user where user='test'   【2】常规删除用户:drop user 'user'@'host'; (5.4)修改管理员账户     【1】update user set user="新用户名" where user="root"; (将用户名为root的改为新用户名)  【2】flush privileges; (刷新权限)   (5.5)密码复杂度要求(修改密码)     【1】set password for 用户名@localhost = password('新密码');   【2】flush privileges; (刷新权限) (5.5)用户登录过程   【1】用户名和IP验证-》【2】mysql.user权限验证-》【3】看mysql.db表-》【4】看mysql.table_priv-》【5】看mysql.column_priv
  【6】再没有就报错 (6)如何实现角色功能?
  mysql5.7才有
  【1】grant proxy on 'user1'@'127.0.0.1' to 't1'@'127.0.0.1';
      让 t1 拥有 user1 的权限,如果多个用户都去这样做,那么user1用户就映射成了一个角色。(需要先建立'user1'@'127.0.0.1' 用户)
  【2】核心表:mysql.proxies_priv
    

详细演示:

三、mysql登录

  常用登录方式如下:

四、账户权限设置

  

 (4.1)查看用户表,所有的用户权限信息都放在mysql.user表中。
 select user,host,password from mysql.user;

(4.2)创建用户

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

  

  可以用select user();查看当前登录用户;  

  

(2)create user:这种方式密码是自动加密的,形式为 user@host

 create user test1@'%' identified by '';
 #mysql中用户的形式就是 用户名@主机名,这里主机名位置写的%,代表任意IP都可以连。

  

  查看授权定义:show grants for test2@localhost;

  

  

  

查看所有权限:select * from mysql.user;

 

(4.3)授权grant:两种,一种是单纯授权,一种是授权并建立用户。

grant all privileges on *.* to 'test2'@'localhost' identified by '123456';  #给现有账户授权,如果账户不存在则默认会新建(前提是运行该语句的用户权限足够大,这里我用的root)

flush privileges; #授权后记得刷新缓存

#也可以用其新建账户并授权(原本 test3@% 是不存在的)
  

  

  查看其权限: show grants for test3@'%';

  

  查看所有权限:select * from mysql.user;#会出现如下图这种乱码

  

  

可以竖着看:select * from mysql.user\G;

  


(4.4)权限等级

  【1】核心开发权限:基本的DML(即CRUD)

  【2】管理权限(表级):DDL及锁表等权限

  【3】管理员权限(server):所有权限,包括创建用户啊,复制、备份等操作;

(4.5)删除用户

 

(1)drop user  test1@127.0.0.1;
(2)delete from mysql.user where condition;
  flush privileges;   #用delete也需要刷新磁盘数据到缓存

  


五、mysql数据库安全配置

  

  (5.1)禁用多余的管理员账号

    【1】drop user user@host;    【2】delete from mysql.user where condition; (比如删除所有密码为空并且user不为root)

  (5.2)删除掉db表数据

    【1】进入mysql数据库  【2】show tables;查看所有表  【3】找到db表并且delete它(为什么要删,这里其实是删test库访问权限,因为没有权限的用户都可以访问test库,这不太安全)

  (5.3)删除test库

    【1】show databases;  【2】drop database test; (反正test库在线上用不到,可以干掉)

  (5.4)修改管理员账户

    【1】update user set user="新用户名" where user="root"; (将用户名为root的改为新用户名)  【2】flush privileges; (刷新权限)

  (5.5)密码复杂度要求(修改密码)

    【1】set password for 用户名@localhost = password('新密码');    【2】flush privileges; (刷新权限)

  (5.6)权限最小化

    只给所需要的最小权限;

(2.2)学习笔记之mysql基础操作(登录及账户权限设置)的更多相关文章

  1. (2.3)学习笔记之mysql基础操作(表/库操作)

    本系列学习笔记主要讲如下几个方面: 本文笔记[六:表操作--线上可以直接删除表吗?] 附加:库操作 [1]创建制定字符集的数据库 需求描述: 在创建DB的时候指定字符集. 操作过程: 1.使用crea ...

  2. Python学习笔记15—mysql的操作

    安装 Python-MySQLdb pip install mysql-Python Python对mysql的操作 建立一个实验数据库demo mysql> create database d ...

  3. [Python] 学习笔记之MySQL数据库操作

    1 Python标准数据库接口DB-API介绍 Python标准数据库接口为 Python DB-API,它为开发人员提供了数据库应用编程接口.Python DB-API支持很多种的数据库,你可以选择 ...

  4. Git 学习笔记--1.Git基础操作

    取得项目的Git仓库 有两种方式取得Git项目仓库.第一种是在现存的目录下,通过导入所有文件来创建新的Git仓库.第二种是从已有的Git仓库克隆出一个新的镜像仓库. 在工作目录中初始化新仓库  要对现 ...

  5. MySQL基础操作&&常用的SQL技巧&&SQL语句优化

    基础操作     一:MySQL基础操作         1:MySQL表复制             复制表结构 + 复制表数据             create table t3 like t ...

  6. Java学习笔记:语言基础

    Java学习笔记:语言基础 2014-1-31   最近开始学习Java,目的倒不在于想深入的掌握Java开发,而是想了解Java的基本语法,可以阅读Java源代码,从而拓展一些知识面.同时为学习An ...

  7. MYSQL 基础操作

    1.MySQL基础操作 一:MySQL基础操作 1:MySQL表复制 复制表结构 + 复制表数据 create table t3 like t1; --创建一个和t1一样的表,用like(表结构也一样 ...

  8. 「学习笔记」字符串基础:Hash,KMP与Trie

    「学习笔记」字符串基础:Hash,KMP与Trie 点击查看目录 目录 「学习笔记」字符串基础:Hash,KMP与Trie Hash 算法 代码 KMP 算法 前置知识:\(\text{Border} ...

  9. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

随机推荐

  1. Reveal使用教程

    Reveal使用教程 Reveal是用于透视程序整体结构的一个软件,软件收费89美刀,试用期30天,不过好在有破解版,无需担心花钱的问题​ 在然后呢,软件在哪下,可以在我的github上下载到破解版本 ...

  2. Redis 的 fields 遇到的问题

    问题描述:本地和测试环境同使用一台redis服务器,本地环境和测试环境使用 key,fileds,value 中的fileds 来区分,例如 key fields value 004920c6eba1 ...

  3. 浅谈HTTPS协议和SSL、TLS之间的区别与关系

    HTTP可能是我们见到过最多的一个字符串了,应该没有之一,而对于HTTPS到来和趋势,我们又开始看到SSL/TLS,所以对于一般不只做技术的人来说这或许还是一个疑问,那么子凡就趁最近在折腾这方面来给大 ...

  4. php判断今日是本月的第几个星期几

    php判断今日是本月的第几个星期几 php中有一个非常强悍的系统函数date()函数.巧妙的利用他可以实现显示任意我们需要的时间.比如今天遇到个需要是要判断今天是本月的第几个星期几,这里就不讨论这种说 ...

  5. CH Round #54 - Streaming #5 (NOIP模拟赛Day1)(被虐瞎)

    http://ch.ezoj.tk/contest/CH%20Round%20%2354%20-%20Streaming%20%235%20%28NOIP%E6%A8%A1%E6%8B%9F%E8%B ...

  6. jqgrid的排序问题

    今天是本人解决的一个小bug  所以写的粗略些. 问题是这样的ORDER BY  a.$sidx $sord 当时本人排序时候没用jqgrid的默认排序(可能今天这个大家看不懂,很抱歉啊各位,今天主要 ...

  7. JVM命令行工具&垃圾收集器&垃圾收集策略思维导图

    1.JVM命令行工具 2.垃圾回收算法 3.垃圾收集器

  8. 56、LeakCanary——直白的展现Android中的内存泄露

    转载:http://blog.csdn.net/watermusicyes/article/details/46333925 DEMO下载地址:https://github.com/SOFTPOWER ...

  9. Codeforces Round #364 (Div. 1)B. Connecting Universities

    题目链接:传送门 题目大意:n个点构成一棵树,给定 k*2 点,要分成 k 组,使每组点之间的距离之和最大. 题目思路:因为是求距离之和最大,所以我们可以知道这样一个性质.如果以一条边为界,两边的子树 ...

  10. python抓取网页中的动态数据

    一.概念 网页中的许多数据并不是写死在HTML中的,而是通过js动态载入的.所以也就引出了什么是动态数据的概念,动态数据在这里指的是网页中由Javascript动态生成的页面内容,是在页面加载到浏览器 ...