MySQL-快速入门(11)用户管理
1、权限表
存储用户权限信息表主要有:user、db、host、tables_priv、columns_priv、procs_priv。
1》user表:
记录允许连接到服务器的账号信息,里面的权限是全局级别的。user表有42个字段,这些字段可以分为4类,分别是用户列、权限列、安全列、资源控制列。
2》db和host表
3》tables_priv和columns_priv表
4》procs_priv表
2、账户管理
1》登录和登出MySQL
mysql [-h localhost] -uroot -p12345 -P端口号,默认3306 -e命令或SQL语句
2》新建普通用户
1>create user或grant语句:
//create user ...
create user user_specification[,user_specification] ... user_specification:
user@host
[
identified by [password] 'password'
|identified with auth_plugin [as 'auth_string']
] user:表示创建的用户名称
host:表示允许登录的用户主机名
identified by:表示用来设置用户的密码。与identitied with互斥。
[password]:表示使用hash值设置密码
'password':表示登录时使用的普通明文密码
identified with:为用户指定一个身份验证插件。与identified by互斥。
auth_plugin:插件的名称
auth_string:该参数传值给身份验证插件,由该插件解析该参数的意义
举例:create user 'lfy'@'localhost' identified by '';
或者
create user 'lfy'@'localhost';
//grant语句不仅可以创建用户,还可以在创建用户的同时授权
grant privileges on db.table
to user@host [identified by 'password'] [,user [identified by 'password']]
[with grant option]; privileges:表示赋予用户的权限类型
db.table:表示用户的权限所作用的数据库中的表
identified by:设置的密码
[with grant option]:表示对新建立的用户赋予grant权限,即该用户可以对其他用户赋予权限。
grant select,update on *.*
to 'lfy'@'localhost' identified by ''; user、host字段区分大小写。查询的时候需要指定正确的值。
2>直接操作MySQL授权表:
insert into MySQL.user(user,host,password,[privilegelist]) values(...)
3》删除普通用户,2种方式。
1>drop user语句
drop user user1 [,user2];
2>delete删除用户
delete from MySQL.user where host='hostname' and user='username';
4》root用户修改自己的密码
1>mysqladmin命令
mysqladmin -u username -h localhost -p password 'newpwd';
2>修改MySQL.user表
update MySQL.user set password=password("rootpwd") where user="root" and host="localhost"; 执行完上面的语句修改密码后,还需要执行:
mysql>FLUSH PRIVILEGES; //重新加载权限
3>使用set语句修改root用户的密码
//可以修改别的用户的密码,也可以修改自己的密码
mysql>set password=password("rootpwd"); mysql>FLUSH PRIVILEGES;
5》root用户修改普通用户的密码:set数据库的MySQL.user表,或者grant语句
1>使用set语句修改普通用户的密码
set password for 'user'@'host' = password('somepassword'); //普通用户更改自己的密码
set password=password('somepassword');
2>使用update语句修改普通用户的密码
update MySQL.user set password=password('pwd')
where user='username' and host='hostname'; PLUSH PRIVILEGES;
3>使用grant语句修改普通用户密码
grant urant on *.* to 'user'@'%' identified by 'somepassword'; //全局界别使用grant usage语句(*.*)指定某个账户的密码而不影响账户当前的权限。 使用grant ... identified by语句或者MySQLadmin password命令设置密码,它们俊辉加密密码。这种情况下,
不需要使用password()函数
6》普通用户修改密码
set password = password('pwd');
7》root用户密码丢失
1>使用--skip-grant-tables选项启动MySQL服务
使用使用--skip-grant-tables选项启动MySQL服务,MySQL数据库服务器将不加载权限判断,任何用户都能访问数据库。Windows操作系统中,可以使用MySQLLd或MySQLLd-nt来启动MySQL服务进程。
mysqld --skip-grant-tables
或者
mysqld-nt --skip-grant-tables
2>使用root用户登录,重新设置密码。
3、权限管理
1》MySQL的各种权限
2》授权
1>全局层级:全局权限适用于一个给定服务器中的所有数据库。这些权限存储在MySQL.user表中。grant all on *.*和revoke all on *.*只授予和撤销全局权限。
2>数据库层级
数据库权限适用于一个给定数据库中的所有目标。这些权限存储在MySQL.db和MySQL.host表中。grant all on db_name.和revoke all on db_name.*只授予和撤销数据库权限。
3>表层级
表权限适用于一个给定表中的所有列。
4>列层级
列权限适用于一个给定表中的单一列。
5>子程序层级
3》收回权限
revoke ...
4》查看权限
mysql> show grants for 'mysql'@'localhost';
+----------------------------------------------------------------------+
| Grants for mysql@localhost |
+----------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'localhost' WITH GRANT OPTION |
+----------------------------------------------------------------------+
1 row in set (0.00 sec) mysql>
4、访问控制
1》连接核实阶段
通过Host、user、password几个字段核实用户的连接请求。不能通过,则拒绝访问数据库服务器。
2》请求核实阶段
对于通过连接的会话,对于此链接上的每个请求,服务器检查用户要执行的操作,然后检查是否有足够的权限来执行它。
MySQL-快速入门(11)用户管理的更多相关文章
- MySql基础笔记(一)Mysql快速入门
Mysql快速入门 一)基本概念 1)表 行被称为记录,是组织数据的单位.列被称为字段,每一列表示记录的一个属性. 2)主键 主键用于唯一的标识表中的每一条记录.可以定义表中的一列或者多列为主键, 但 ...
- MySQL 快速入门教程
转:MySQL快速 入门教程 目录 一.MySQL的相关概念介绍 二.Windows下MySQL的配置 配置步骤 MySQL服务的启动.停止与卸载 三.MySQL脚本的基本组成 四.MySQL中的数据 ...
- MySQL快速入门(二)
目录 MySQL快速入门(二) 约束条件 自增 自增的特性 主键 外键 级联更新/删除 表与表之间的关系 外键约束 操作表方法 查询关键字 练习数据 select··from where 筛选 gro ...
- MySQL 快速入门(一)
目录 MySQL快速入门 简介 存储数据的演变过程 数据库分类 概念介绍 MySQL安装 MySQL命令初始 环境变量配置 MySQL环境变量配置 修改配置文件 设置新密码 忘记密码的情况 基本sql ...
- Mysql快速入门(三)
MySQL性能优化之查看执行计划explain 介绍: (1).MySQL 提供了一个 EXPLAIN 命令, 它可以对 SELECT 语句进行分析, 并输出 SELECT 执行的详细信息, 以供开发 ...
- Linux快速入门03-系统管理
这部分将涉及常用的各类linux命令和一些系统高级管理特性,尤其是shell script的创建,这部分在系统自动化运维时会很有作用. Linux系列文章 快速入门系列--Linux--01基础概念 ...
- elasticsearch系列二:索引详解(快速入门、索引管理、映射详解、索引别名)
一.快速入门 1. 查看集群的健康状况 http://localhost:9200/_cat http://localhost:9200/_cat/health?v 说明:v是用来要求在结果中返回表头 ...
- mysql安装使用--2 用户管理
1 修改mysql.user表 添加用户 mysql> INSERT INTO mysql.user (Host,User,Password) VALUES (\'%\',\'system\', ...
- 阿里云RDS for MySQL 快速入门——笔记
1初始化配置 1.1设置白名单 创建RDS实例后,需要设置RDS实例的白名单,以允许外部设备访问该RDS实例.默认的白名单只包含默认IP地址127.0.0.1,表示任何设备均无法访问该RDS实例. 设 ...
- Linux快速入门教程-进程管理ipcs命令学习
使用Linux系统必备的技能之一就是Linux进程管理,系统运行的过程正是无数进程在运行的过程.这些进程的运行需要占用系统的内存等资源,做好系统进程的管理,对于我们合理分配.使用系统资源有非常大的意义 ...
随机推荐
- 40 final、finally、finalize的区别
1.final 用于声明属性.方法.类.分别表示属性不可被改变,方法不可被覆盖,类不可被继承. (1)一个类不能既被声明为abstract的,又被声明为final的. (2)被声明为final的变量必 ...
- 【ZJOJ5186】【NOIP2017提高组模拟6.30】tty's home
题目 分析 如果直接求方案数很麻烦. 但是,我们可以反过来做:先求出所有的方案数,在减去不包含的方案数. 由于所有的路径连在一起, 于是\(设f[i]表示以i为根的子树中,连接到i的方案数\) 则\( ...
- 【NOIP2016提高A组模拟8.17】(雅礼联考day1)Matrix
题目 分析 假设,我们从\(F_{i,2}\)出发,那么对\(F_{n,n}\)的贡献就是\(某个系数乘以a^{n-i}b^{n-1}r_i\): 同理,如果从\(F_{2,i}\)出发,那么对\(F ...
- 【NOIP2016提高A组模拟8.15】Password
题目 分析 首先我们知道,原A序列其实表示一个矩阵,而这个矩阵的对角线上的数字就是答案B序列. 接着\(a.b>=gcd(a,b)\),所以序列A中的最大的数就是ans[1],第二大的数就是an ...
- linux-网络管理-6
Hub 集线器 物理层设备 多端口中继器,不记忆MAC地址 以太网桥 OSI第二层数据链路层 扩展了网络带宽 分割了网络冲突域,使网络冲突被限制在最小的范围内 交换机作为更加智能的交换设备,能够提供更 ...
- Codeforces 963A Alternating Sum ( 思维 && 数论 )
题意 : 题目链接 分析 : Tutorial 讲的很清楚 至于为什么这样去考虑 算是一个经验问题吧 如果一个问题要你给出模意义下的答案 就多考虑一下答案是要用逆元构造出来 也就说明有除法的存在 那么 ...
- JUnit——单元测试步骤
步骤: 1. New Package(一般命名为*.Test,测试类与开发类放在不同的包中)2. New JUnit Text Case(一般命名为*Test)3. 选择需要测试的方法 4. 可以下载 ...
- FJWC2017&FJOI2017一试 游记
day1 早上是以前泉州七中的杨国烨讲课.(据说当时看新闻说是一对双胞胎一起上thu的其中一个)课题是图论/网络流. 下午第一道一开始推出来了一个之和面积有关的式子,然后觉得可以容斥一发,觉得 ...
- windows10 gcc编译C程序(简单编译)
参考:http://c.biancheng.net/view/660.html gcc可以一次性完成C语言源程序的编译,也可以分步骤完成:下面先介绍一次性编译过程. 1.生成可执行程序 cd xxx ...
- WebStorm 在 Mac 版本的基本设置,包括 ES6、Node.js、字体大小等
WebStorm 在 Mac 和 win 的设置有区别,便于以后用到快速查找,记之. 要设置先点击 WebStorm 字样如下图: 后点击 Preferences 字样如下图: 设置 es6 语法, ...