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进程管理,系统运行的过程正是无数进程在运行的过程.这些进程的运行需要占用系统的内存等资源,做好系统进程的管理,对于我们合理分配.使用系统资源有非常大的意义 ...
随机推荐
- react axios 跨域问题
周末又是补充知识点的时候了,用了react axios 跨越问题,貌似是要比vue 稍微麻烦一点 它请求http好像是没有问题的,但是https还是有跨域问题的, 我用的刚好是create-react ...
- requests中text,content,json之间的区别
response.text : 返回一个字符串\n",content : 返回二进制\n",json() : 返回对象"
- Tomcat网站上的core和deployer的区别
8.5.13 Please see the README file for packaging information. It explains what every distribution(分布) ...
- 1.端口被占用问题:Embedded servlet container failed to start. Port 8097 was already in use.
1.端口被占用问题:Embedded servlet container failed to start. Port 8097 was already in use.netstat -anonetst ...
- package.json文件
http://javascript.ruanyifeng.com/nodejs/packagejson.html#toc7(copy) 通常我们使用npm init命令来创建一个npm程序时,会自动生 ...
- Codeforces Round #302 (Div. 2) D. Destroying Roads 最短路 删边
题目:有n个城镇,m条边权为1的双向边让你破坏最多的道路,使得从s1到t1,从s2到t2的距离分别不超过d1和d2. #include <iostream> #include <cs ...
- 在Java web模板的上进行编写
要求: 链接:https://pan.baidu.com/s/15NdAt-aiv-X9sRbMSfXYXQ 提取码:7agw web模板: 链接:https://pan.baidu.com/s/1A ...
- 响应式布局@media screen and ( max-width: 像素值 ) {}
设计思路很简单,首先先定义在标准浏览器下的固定宽度(假如标准浏览器的分辨率为1024px,那么我们设置宽为980px),然后用Media Query来监测浏览器的尺寸变化,当浏览器的分辨率小于1024 ...
- 当遇到npm ERR! Unexpected end of JSON input while parsing near……时的解决办法
运行npm install时有时会遇到以下错误: npm ERR! Unexpected end of JSON input while parsing near ... 这时可以先执行下面的命令: ...
- enum简单使用
前台传入weightCode :1/2/3/4,获取不同的区间0~10 10~50 50~100 100~999999 0~999999 public void setWeight(){ this.m ...