0x01

  mysql中的权限分布

  

  mysql中的用户信息都存储在系统数据库mysql的user表中

  查询语句:select host,user,password from mysql.user;

创建用户

用户账号管理:
create user
drop user
rename user
set password
权限管理:
grant
revoke

create user

CREATE USER username@hostname
[
IDENTIFIED BY [PASSWORD] 'password'
]

主机也可以使用通配符:testuser@'192.168.100.1_ _'

表示可以使用100.100-100.199

查看用户能够使用的权限:show grants for username@'hostname'

rename user
RENAME USER old_user TO new_user
[, old_user TO new_user] ...
RENAME USER 'jack'@'localhost' TO 'tom'@'127.0.0.1';

grant
Mysql的权限类型:
库级别
表级别
字段级别
管理类
程序类

管理类权限
create temporary tables 临时表
create user
file 允许用户读或者写某些文件
lock tables 添加显式锁
process:查看用户的线程
reload:相当于执行flush和reset
replication client 查询有哪些复制客户端
replication slave 赋予用户复制权限
show databases
shutdown
super
数据库访问权限
alter
alter routine 存储历程
create
create routine 存储过程,存储函数
create view
delete
drop
execute
grant option 将自己的权限复制给别的用户
index 索引
show view

数据操作类权限(表级别):
select
insert
update
delete

字段级别:
select(col1,....)
update(col1,....)
insert(col1,....)

GRANT
priv_type [(column_list)]
[, priv_type [(column_list)]] ...
ON [object_type] priv_level
TO user_specification [, user_specification] ...
[REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}]
[WITH with_option ...]

GRANT PROXY ON user_specification
TO user_specification [, user_specification] ...
[WITH GRANT OPTION]

object_type:
TABLE
| FUNCTION
| PROCEDURE

priv_level:
*
| *.*
| db_name.*
| db_name.tbl_name
| tbl_name
| db_name.routine_name

user_specification:
user
[
IDENTIFIED BY [PASSWORD] 'password'
| IDENTIFIED WITH auth_plugin [AS 'auth_string']
]

ssl_option:
SSL
with_option:
GRANT OPTION 转赠给别人
| MAX_QUERIES_PER_HOUR count 每小时允许执行的最大查询次数
| MAX_UPDATES_PER_HOUR count
每小时允许执行的最大更新次数
| MAX_CONNECTIONS_PER_HOUR count
每小时允许执行的最大连接次数
| MAX_USER_CONNECTIONS count
使用同一个账号可以同时连接的次数

要想创建库应该对所有表都有权限

收回授权
REVOKE
priv_type [(column_list)]
[, priv_type [(column_list)]] ...
ON [object_type] priv_level
FROM user [, user] ...

REVOKE ALL PRIVILEGES, GRANT OPTION
FROM user [, user] ...

REVOKE PROXY ON user
FROM user [, user] ...

几个跟用户授权相关的表:
db:库级别的权限
host:主机级别权限,已废弃
tables_priv:表级别权限
colomns_priv:列级别的权限
procs_priv:存储过程和存储函数相关的权限
proxies_priv:代理用户权限·

语法形式:

create user ‘用户名’@’允许其登录的地址’ identified by ‘密码’;

说明:

1,创建的用户需同时指定该用户可以在哪个地址进行登录。其中“%”代表“任何地址”。

2,用户创建之后,自动在mysql的user表中添加了一条记录,但该用户还没有权限。

删除用户

drop user ‘用户名’@’允许其登录的地址’;

删除匿名用户

drop user ''@'xxx.xxx.com';

修改用户密码

修改自己密码:set password = password(‘新密码’);     or     mysqladmin -u用户名 password 新密码  -p旧密码

修改他人密码(必须有修改权限):

set password for ‘用户名’@’允许其登录的地址’ = password(‘新密码’);

实例:

第一种方法:修改自己密码:set password = password('xxxxxx');

第二种方法:mysqladmin -uroot password xxxx -pxxxxxx12       ------- password  后面是要设置的新密码, -p 后面是旧密码    -p和旧密码之间不能有空格

第三种方法: update mysql.user set password=password('redhat1') where user='root';

       flush privileges;     ----- 让其立即生效,即 --让MySQL数据库重读mysql表

修改别的用户密码:set password for 'test'@'%' = password('xxxxxxx');

增加权限

grant 权限名1,权限名2,.... on 数据库名.对象名 to ‘用户名’@’允许其登录的地址’ identified by ‘密码’;

说明:

  1. 权限名就是:’select’, ‘update’, ‘delete’,等等。其中ALL 表示“所有权限”,或all privileges也一样
  2. 对象名:就是一个数据库中“装”的东西,表是最常见的,也可以是视图,存储过程,存储函数等. 其中:*.*表示所有数据中的所有对象,某数据库名.*表示该数据库中的所有对象——这个商业上常用。
  3. identified by ‘密码’用于给一个用户在此时修改密码,不写也可以,那就不修改密码。
  4. 但同时该语句也可以创建用户(如果不存在),但此时identified by ‘密码’必须写。

grant all on db2.* to test2@'%';    ----给test2用户所有的权限

grant select,insert,update on db2.* to test1@'%';     --- 给test1 select,insert,update 权限,如果之前test1用户有delete权限,那么此时权限依然存在,不会覆盖。

grant select, insert, update on xxxxx.* to 'xxx'@'localhost' identified by 'xxxxx' with grant option;

删除权限

revoke 权限名1,权限名2,.... on 数据库名.对象名 from ‘用户名’@’允许其登录的地址’   ----- 表示从某个用户身上“取消”某些权限(也许还保留了其他权限)。

实例:

revoke insert on db2.* from test1@'%';

flush privileges;   ---让其生效

常用的MySQL命令 集锦:

select user();    --- 查看当前哪个用户登录

select database();    --- 查看当前在哪个数据库

select version();     ---查看当前数据库的版本

导出一个数据库:mysqldump -uroot -p db2 > db2.sql     ---输入密码即可导出db2这个数据库

导出一张表:mysqldump -uroot -p db2 cls > db2cls.sql   --- 输入密码即可导出db2数据库里面的cls表

导出一个数据库结构:mysqldump -uroot -p -d --add-drop-table db2 > db2stru.sql    --- 输入密码即可导出db2数据库的表结构,即 没有insert,alter等sql语句

查看数据库中含有哪些用户:select distinct(user) from mysql.user;

查看用户具体权限:

show grants for 'test2'@'%';   ---- 查看test2用户具体有哪些权限

select * from mysql.user where user='test2'\G;

查看MySQL数据库所有用户及权限:SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;

创建数据库及编码:CREATE DATABASE 'xxxxx' default CHARACTER SET utf8 COLLATE utf8_general_ci;

更改root用户能允许任何主机连接命令

UPDATE `user` SET `Host`='%' WHERE (`Host`='localhost') AND (`User`='root')

mysql基础之-mysql数据控制语言DCL(七)的更多相关文章

  1. MySQL基础、MySQL安装和MariaDB安装

    MySQL基础 目录 MySQL基础 关系型数据库介绍 数据结构模型 RDBMS专业名词 关系型数据库的常见组件 SQL语句 MySQL安装与配置 MySQL安装 MariaDB安装 关系型数据库介绍 ...

  2. (3.16)mysql基础深入——mysql字符集

    (3.16)mysql基础深入——mysql字符集 关键字:mysql字符集,mysql编码 目录 1.概念 2.常用的字符编码 3.查看mysql字符集 [3.1]查看服务器支持的字符集 [3.2] ...

  3. (3.15)mysql基础深入——mysql默认数据库/系统数据库

    (3.15)mysql基础深入——mysql默认数据库 关键词:Mysql默认数据库,mysql系统数据库 系统数据库的组成 一共4个 [1]information_schema(可以理解成字典表) ...

  4. (3.14)mysql基础深入——mysql 日志分析工具之pt-querty-digest【待完善】

    (3.14)mysql基础深入——mysql 日志分析工具之pt-querty-digest 关键字:Mysql日志分析工具.mysqlsla 常用工具 [1]mysqldumpslow:官方提供的慢 ...

  5. (3.13)mysql基础深入——mysql日志分析工具之mysqlsla【待完善】

    (3.13)mysql基础深入——mysql 日志分析工具之mysqlsla 关键字:Mysql日志分析工具.mysqlsla 常用工具 [1]mysqldumpslow:官方提供的慢查询日志分析工具 ...

  6. (3.12)mysql基础深入——mysql日志文件/其他文件(socket/pid/表结构/Innodb)

    (3.12)mysql基础深入——mysql日志文件/其他文件(socket/pid/表结构/Innodb) 关键词:mysql日志文件,mysqldumpslow分析工具 目录:日志文件的分类 1. ...

  7. (3.11)mysql基础深入——mysql文件分类与配置文件管理

    (3.11)mysql基础深入——mysql文件分类与管理 关键词:mysql配置文件,mysql参数文件,mysql中的my.cnf 目录:mysql数据库文件分类: [1]参数文件:my.cnf ...

  8. (3.4)mysql基础深入——mysql.server启动脚本源码阅读与分析

    (3.4)mysql基础深入——mysql.server启动脚本源码阅读与分析 my.server主要分为3大部分 [1]变量初始化部分 [2]函数声明部分 [3]具体执行部分 #!/bin/sh # ...

  9. (3.2)mysql基础深入——mysql源码阅读工具安装与应用

    (3.2)mysql基础深入——mysql源码阅读工具安装与应用 关键字:mysql源码阅读工具 工具列举:一般多用[1][2][3]吧 [1]source insight [2]写字板/记事本 UE ...

随机推荐

  1. Spring-mvc 配置文件applicationContext.xml

    相关jar包(4.3.16.RELEASE) <!-- Spring mvc 基础jar包,maven 依赖 --> <dependency> <groupId>o ...

  2. Vue+Vuex实现自动登录 升级版

    Vue+Vuex实现自动登录 升级版 之前实现的版本在这里:Vue+Vuex实现自动登录       在之前实现的版本中,如果你进行测试,可以看到在浏览器的local Storage中,确实里面有了我 ...

  3. 使用Xtrabackup进行MySQL备份 zz

    zz from  http://www.magedu.com/ 一.安装 1.简介 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对i ...

  4. oracle [精华] 你是否仍迷信rowid分页?

    http://www.itpub.net/thread-1603830-1-1.html

  5. 201771010128王玉兰《面向对象与程序设计(java)第十五周学习总结》

    第一部分:理论知识 一:JAR文件 Java程序的打包:程序编译完成后,程序员 将.class文件压缩打包为.jar文件后,GUI界面 程序就可以直接双击图标运行. jar文件(Java归档)既可以包 ...

  6. Node.js躬行记(1)——Buffer、流和EventEmitter

    一.Buffer Buffer是一种Node的内置类型,不需要通过require()函数额外引入.它能读取和写入二进制数据,常用于解析网络数据流.文件等. 1)创建 通过new关键字初始化Buffer ...

  7. [设计模式](转)Java中的24种设计模式与7大原则

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  8. [SD心灵鸡汤]006.每月一则 - 2015.10

    1. 贫不足羞,可羞是贫而无志. 2. 艺术的大道上荆棘丛生,这也是好事,常人望而却步,只有意志坚强的人例外. 3. 古今中外,凡成就事业,对人类有作为的无一不是脚踏实地.艰苦攀登的结果. 4. 理想 ...

  9. 微软:悬赏10万美金破解 Linux 系统

    微软选择了 Linux 系统作为物联网平台,并且悬赏10万美金邀请黑客来进行破解. 当然,该悬赏计划不是针对所有的 Linux 系统,而是特别针对微软的物联网端对端安全平台Azure Sphere.本 ...

  10. 当微信小程序遇到云开发,再加上一个类似 ColorUI 的模板,人人都能做小程序了

    作为一个 Java 程序员,早就想尝试一把微信小程序,但是一直苦于没有想法,再加上做一个漂亮的页面实在不太擅长. 由于自己比较喜欢历史,经常看历史方面的书.在一次梳理中国现有的朝代时,突然想到,要是可 ...