Mysql的权限

  mysql中存在4个控制权限的表,分别为user表,db表,tables_priv表,columns_priv表。

mysql权限表的验证过程为:

  • 先从user表中的Host,User,Password这3个字段中判断连接的ip、用户名、密码是否存在,存在则通过验证。
  • 通过身份认证后,进行权限分配,按照user,db,tables_priv,columns_priv的顺序进行验证。

   即先检查全局权限表user,如果user中对应的权限为Y,则此用户对所有数据库的权限都为Y,将不再检查db, tables_priv,columns_priv;

   如果为N,则到db表中检查此用户对应的具体数据库,并得到db中为Y的权限;

   如果db中为N,则检查tables_priv中此数据库对应的具体表,取得表中的权限Y,以此类推。

  

1.查询数据库的用户名,主机,密码

mysql>select user,host,password from mysql.user;

2.显示某个用户的授权命令

mysql>show grants for rep@'%';

3.赋予某个用户对库test进行select,insert,update,delete的权限的命令如下

mysql>grant select,insert,update,delete on test.* to user01@'10.200.20.%' identified by '';

4.赋予备份整个实例权限的命令


mysql>grant lock tables,reload,super,select,show view,trigger,process on *.* to backup@'localhost' identified by '';

5.赋予远程备份各个库权限的命令

mysql>grant lock tables,select,show view,trigger,process  on *.* to backup@'10.200.20.18'   identified by '';

主从复制时,需要replication slave权限,

查看复制的状态,需要replication client权限。

6.给用户superuser赋予所有权限,并允许superuser用户也能将这些权限赋予其他用户

mysql>grant all privileges on *.* to 'superuser'@'%' identified by ''  with grant option;

7.回收权限(不包括赋权权限)

mysql> revoke all privileges on *.* from superuser; #superuser在修改后的下一次请求时,新权限才生效

8.回收赋权权限

mysql>revoke grant option on *.* from superuser ;

9.删除mysql用户

mysql>drop user 'zhang'@'%';

mysql>delete from mysql.user where user='zhang' and host='%';
mysql>flush privileges;

10.对账户重命名

mysql> rename user 'jack'@'%' to 'jim'@'%';

Mysql的密码

9.修改用户密码(使用mysqladmin命令修改)

#mysqladmin -u root password 123456  #在root没有密码的情况下
#mysqladmin -u root -p123456 password abcdef #root有密码,(-p和密码要连在一起)
#mysqladmin -u superuser -p123456 -h172.23.216.86 password abcdef #superuser的host为%,不是localhost

10.修改用户密码(使用set password命令修改)

mysql>set password for user01@'10.200.20.%'=password('');

11.修改用户密码(使用grant命令重新赋予用户连接密码)

mysql>grant usage on test.* to user01@'10.200.20.%' identified by '';

12.修改用户密码(使用命令直接修改系统表)

mysql>update mysql.user set password=password('') where user='user01' and host='10.200.20.%'
mysql>flush privileges;

授权小结:1.当mysqld启动时,所有的授权表被读到内存,并开始生效。当服务器注意到授权表被改变时,现存的客户端连接会收到如下影响。

    •  表和列的权限在客户端的下一次请求时生效。
    •  数据库的权限改变在下一个 USE db_name 命令时生效。
    •    全局权限的改变和密码的改变在下一次客户端连接时生效。

       2.grant,revoke或set password 命令对授权表进行修改,服务器会自动将授权表重新加载到内存。

      如果手动修改授权表(insert,update,delete),需要手动flush privileges。

       3.mysql的主机通配符‘%’不包括‘localhost’,‘localhost’和ip‘127.0.0.1’并不等同,如果使用“mysql -uroot -h localhost”,则默认会连接socket文件,

      如果使用“mysql -uroot -h 127.0.01”,则会连接 TCP端口。

---------------------------------------------------------------------------补充-------------------------------------------------------------------------

一、创建用户时用grant和create user的区别

  mysql创建用户也有三种方法,上面只介绍到了grant,但是还可以用insert user表,create user的方法。

create user 'zhangsan'@'10.200.20.%' identified by '';

用户与@后主机分开 创建出来的用户:

mysql>create user 'zhang@%' identified by '';

用户与@后主机一致创建出来的用户:     (证明这种方法不可行,网上有的说用这种方法)

为了确认用create user创建的权限,那么我们来show grant一下。

mysql>show grants for 'zhang'@'%';

usage表示只能连接登录,并没有实际其他权限。

所有说create user这种方式创建出来的用户,只能连接一下数据库,还需继续用grant给用户进行授权。

二、mysql的root密码忘记,找回

  1.先把mysql服务停掉

#service mysqld stop    

 2.用mysqld_safe加参数--skip-grant-tables 启动,表示跳过授权表启动msyql

#mysqld_safe --skip-grant-tables &

 3.登录mysql,这时候账号密码为空都可以登录

#mysql -uroot

  4.修改root用户密码,退出。

mysql> update mysql.user set password=password('today123') where user='root';
mysql> flush privileges;      #其实这一步执行完之后,权限表已经加载到内从中,quit之后,再登录就已经需要密码了。
                    #为了严禁,还是要关闭mysql,再启动
mysql> quit;

  5.退出mysql,重启mysql,再用新密码登录

# mysqladmin -uroot -ptoday123 shutdown       #这种关闭的方法比较安全,
#ps -ef|grep mysqld                #检查mysql进程,实在杀不掉的话,用killall mysqld
#service mysqld start               #将mysql启动
#mysql -uroot -ptoday123             #用新密码登录

Mysql权限操作、用户管理、密码操作的更多相关文章

  1. MySQL权限和用户管理

    Mysql权限系统(由mysql权限表进行控制user和db)通过下面两个方面进行认证: 1)对于连接的用户进行身份验证,合法的通过验证,不合法的拒绝连接. 2)对于通过连接认证的用户,可以在合法的范 ...

  2. Centos系统mysql 忘记root用户的密码

    Centos系统mysql 忘记root用户的密码: 第一步:(停掉正在运行的mysql) [root@maomao ~]# /etc/init.d/mysqld stop Stopping MySQ ...

  3. MySQL(介绍,安装,密码操作,权限表)

    一.数据库介绍1.数据库相关概念 a.支持并发     b.锁的问题     c.对客户端请求进行认证     d.存取效率(降低IO次数)    数据库服务器(本质就是一个台计算机,该计算机之上安装 ...

  4. Laravel框架简单的用户管理[CURD]操作

    一个基于laravel和bootstrap的简单的用户管理,适合刚入门的我们,在做的过程中可以加深自己对laravel基础理解,里面存在一些问题,还未修改,比如css和js的引入,表单提交地址等不规范 ...

  5. mysql命令大全用户管理相关命令

        1.登陆 mysql>mysql -uJDev -p 2.用户管理 mysql>use mysql; 3.查看有哪些登陆用户 mysql> select host,user, ...

  6. linux用户权限 -> 系统用户管理

    用户基本概述: Linux用户属于多用户操作系统,在windows中,可以创建多个用户,但不允许同一时间多个用户进行系统登陆,但是Linux可以同时支持多个用户同时登陆操作系统,登陆后互相之间并不影响 ...

  7. MySQL学习之用户管理

    用户权限管理 用户权限管理:在不同的项目中给不同的角色(开发者)不同的操作权限,为了保证数据库数据的安全. 简单点说:有的用户可以访问并修改这个数据,而有些用户只能去查看数据,而不能修改数据.就如同博 ...

  8. 【MySQL笔记】用户管理

    1.账户管理 1.1登录和退出MySQL服务器 MySQL –hhostname|hostIP –P port –u username –p[password] databaseName –e &qu ...

  9. mysql数据库: 用户管理、pymysql使用、navicat插件使用

    一.用户管理 二.pymysql增删改查 三.sql注入攻击 一.用户管理 数据安全非常重要 不可能随便分配root账户 应该按照不同开发岗位分配不同的账户和权限 mysql中 将于用户相关的数据放在 ...

  10. mysql权限及用户

    一:Flush table tables_name MySQL的FLUSH句法(清除或者重新加载内部缓存) FLUSH flush_option [,flush_option],如果你想要清除一些My ...

随机推荐

  1. MyBatis笔记----MyBatis 入门经典的两个例子: XML 定义与注解定义

    ----致敬MyBatis官方开放文档让大家翻译,不用看书直接看文档就行了,mybatis的中文文档还需要完备的地方 简介 什么是 MyBatis ? MyBatis 是支持定制化 SQL.存储过程以 ...

  2. mssql sqlserver 可以存储二进制数据的字段类型详解

    转自: http://www.maomao365.com/?p=6738 摘要: 下文将从数据库的数据类型着手,剖析在sqlserver数据库中可以存储二进制数据的数据类型,如下所示: mssql s ...

  3. scrapy实例:爬取中国天气网

    1.创建项目 在你存放项目的目录下,按shift+鼠标右键打开命令行,输入命令创建项目: PS F:\ScrapyProject> scrapy startproject weather # w ...

  4. MySQL多表更新的一个坑

    简述 MySQL支持update t1,t2 set t1.a=2;这种语法,别的关系数据库例如oracle和sql server都不支持.这种语法有时候写起来挺方便,但他有一个坑. 测试脚本 dro ...

  5. 5. svg学习笔记-坐标系变换

    之前我们编写图形元素的时候,编写好了位置大小就是固定的,通过坐标系变换,可以移动缩放,旋转图形,但必须声明的是,进行变换时是图形相对于坐标系的变化,就是图形是不发生变化的,而是坐标系发生了变化,比如缩 ...

  6. 第十四届智能车队员培训 I/O的使用 数据方向寄存器和数据寄存器的配置 MC9S12D64处理器

    I/O的使用 数据方向寄存器和数据寄存器的配置 I/O输入输出的使用: 数据方向寄存器与数据寄存器 寄存器的概念: 寄存器,是集成电路中非常重要的一种存储单元,通常由触发器组成.在集成电路设计中,寄存 ...

  7. KFCM算法的matlab程序(用FCM初始化聚类中心)

    KFCM算法的matlab程序(用FCM初始化聚类中心) 在“聚类——KFCM”这篇文章中已经介绍了KFCM算法,现在用matlab程序对iris数据库进行实现,用FCM初始化聚类中心,并求其准确度与 ...

  8. Java高级教程02

    目录 1.Java线程 1.1. 多线程和多进程 1.2. 线程的执行过程: 1.3. 创建线程的方法 (1). 方法1:通过run() (2). 方法2: 复写Runnable接口(推荐) 1.4. ...

  9. nginx: worker process is shutting down

    正常情况下,nginx进程状态如下: 当修改配置文件,reload之后: PID=17114的wroker有正在处理的连接,等处理结束,该worker就会退出(退出之前,该worker不会处理新的连接 ...

  10. Caused by: java.io.FileNotFoundException: velocity.log (No such file or directory)

    Caused by: org.apache.velocity.exception.VelocityException: Error initializing log: Failed to initia ...