MySQL用户权限管理详解

用户权限管理主要有以下作用:
1. 可以限制用户访问哪些库、哪些表
2. 可以限制用户对哪些表执行SELECT、CREATE、DELETE、DELETE、ALTER等操作
3. 可以限制用户登录的IP或域名
4. 可以限制用户自己的权限是否可以授权给别的用户

一、用户授权

代码如下:

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

 •all privileges:表示将所有权限授予给用户。也可指定具体的权限,如:SELECT、CREATE、DROP等。
 •on:表示这些权限对哪些数据库和表生效,格式:数据库名.表名,这里写“*”表示所有数据库,所有表。如果我要指定将权限应用到test库的user表中,可以这么写:test.user
 •to:将权限授予哪个用户。格式:”用户名”@”登录IP或域名”。%表示没有限制,在任何主机都可以登录。比如:”yangxin”@”192.168.0.%”,表示yangxin这个用户只能在192.168.0IP段登录
 •identified by:指定用户的登录密码
 •with grant option:表示允许用户将自己的权限授权给其它用户

可以使用GRANT给用户添加权限,权限会自动叠加,不会覆盖之前授予的权限,比如你先给用户添加一个SELECT权限,后来又给用户添加了一个INSERT权限,那么该用户就同时拥有了SELECT和INSERT权限。

用户详情的权限列表请参考MySQL官网说明:http://dev.mysql.com/doc/refman/5.7/en/privileges-provided.html

二、刷新权限

对用户做了权限变更之后,一定记得重新加载一下权限,将权限信息从内存中写入数据库。

mysql> flush privileges;

三、查看用户权限

代码如下:

mysql> grant select,create,drop,update,alter on *.* to 'yangxin'@'localhost' identified by 'yangxin0917' with grant option;
mysql> show grants for 'yangxin'@'localhost';

四、回收权限

删除yangxin这个用户的create权限,该用户将不能创建数据库和表。

mysql> revoke create on *.* from 'yangxin@localhost';
mysql> flush privileges;

五、删除用户

mysql> select host,user from user;
+---------------+---------+
| host   | user |
+---------------+---------+
| %    | root |
| %    | test3 |
| %    | yx  |
| 192.168.0.% | root |
| 192.168.0.% | test2 |
| 192.168.0.109 | test |
| ::1   | yangxin |
| localhost  | yangxin |
+---------------+---------+
8 rows in set (0.00 sec)
mysql> drop user 'yangxin'@'localhost';

六、用户重命名

shell> rename user 'test3'@'%' to 'test1'@'%';

七、修改密码

1> 更新mysql.user表

mysql> use mysql;
# mysql5.7之前
mysql> update user set password=password('123456') where user='root';
# mysql5.7之后
mysql> update user set authentication_string=password('123456') where user='root';
mysql> flush privileges;

2> 用set password命令

语法:set password for ‘用户名'@'登录地址'=password(‘密码')

mysql> set password for 'root'@'localhost'=password('123456');

3> mysqladmin

语法:mysqladmin -u用户名 -p旧的密码 password 新密码

mysql> mysqladmin -uroot -p123456 password 1234abcd

注意:mysqladmin位于mysql安装目录的bin目录下

八、忘记密码

1> 添加登录跳过权限检查配置

修改my.cnf,在mysqld配置节点添加skip-grant-tables配置

[mysqld]
skip-grant-tables

2> 重新启动mysql服务

shell> service mysqld restart

3> 修改密码

此时在终端用mysql命令登录时不需要用户密码,然后按照修改密码的第一种方式将密码修改即可。

4> 还原登录权限跳过检查配置

将my.cnf中mysqld节点的skip-grant-tables配置删除,然后重新启动服务即可。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

时间: 2016-07-02

MySQL验证用户权限的方法

知识归纳 因为MySQL是使用User和Host两个字段来确定用户身份的,这样就带来一个问题,就是一个客户端到底属于哪个host. 如果一个客户端同时匹配几个Host,对用户的确定将按照下面的优先级来排 基本观点越精确的匹配越优先 Host列上,越是确定的Host越优先,[localhost, 192.168.1.1, wiki.yfang.cn] 优先于[192.168.%, %.yfang.cn],优先于[192.%, %.cn],优先于[%] User列上,明确的username优先于空u

MySQL创建用户与授权及撤销用户权限方法

MySQL中创建用户与授权的实现方法. 运行环境:widnows xp professional + MySQL5.0 一, 创建用户 命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 说明:username - 你将创建的用户名, host - 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost, 如果想让该用户可以从任意远程主机登陆,可以使用通配符%. password - 该用户的登陆密码,密码可以为空,

MySQL中基本的用户和权限管理方法小结

MySQL 默认有个root用户,但是这个用户权限太大,一般只在管理数据库时候才用.如果在项目中要连接 MySQL 数据库,则建议新建一个权限较小的用户来连接. 在 MySQL 命令行模式下输入如下命令可以为 MySQL 创建一个新用户: CREATE USER username IDENTIFIED BY 'password'; 新用户创建完成,但是此刻如果以此用户登陆的话,会报错,因为我们还没有为这个用户分配相应权限,分配权限的命令如下: GRANT ALL PRIVILEGES ON *.

mysql数据库添加用户及分配权限具体实现

创建用户并分配权限: 复制代码 代码如下: insert into mysql.user(Host,User,Password) values("localhost","phplamp",password("1234"));//创建用户 grant all privileges on dbname.* to 'username'@'%' identified by 'password';//创建用户并分配所有权限 grant select,upd

mysql 新增、删除用户和权限分配

1. 新增用户 复制代码 代码如下: mysql>insert into mysql.user(Host,User,Password) values("localhost","lionbule",password("hello1234"));mysql>flush privileges; 2. 修改用户密码 复制代码 代码如下: mysql>update mysql.user set password=password('new

mysql下普通用户备份数据库时无lock tables权限的解决方法

[root@jb51.net]# mysqldump -u dbuser -ppass db > db.sql mysqldump: Got error: 1044: Access denied for user 'dbuser'@'localhost' to database 'db' when using LOCK TABLES 解决一: 加上-skip-lock-tables选项即可.即: [root@jb51.net]# mysqldump -u dbuser -ppass db --s

Windows下降权MYSQL和apche的运行级别(普通用户权限运行)

1.MYSQL的降权运行 新建立一个用户比如mysql net user mysql microsoft /add net localgroup users mysql /del 不属于任何组 如果MYSQL装在d:\mysql ,那么,给 mysql完全控制 的权限 然后在系统服务中设置,MYSQL的服务属性,在登录属性当中,选择此用户mysql然后输入密码,确定. 重新启动MYSQL服务,然后MYSQL就运行在低权限下了. 2.如果是在windos平台下搭建的apache我们还需要注意一点,

mysql SKIP-NAME-RESOLVE 错误的使用时机造成用户权限

登陆到mysql,查看进程的信息 复制代码 代码如下: show processlist; 发现大量的进程的状态为 login 原来默认的时候mysql启动时是不使用 skip-name-resolve选项的,这样的话,从其它主机的连接会比较慢,因为mysql会对这个ip做dns反向查询,导致大量的连接处于 login状态..... 解决这个问题有两个办法 一是加入 skip-name-resolve参数重启mysql 二是在 /etc/hosts中加入一句 192.168.0.2 server

如何用phpmyadmin设置mysql数据库用户的权限

一.首先您需要在服务器上安装配置 phpMyAdmin 安装配置方法详见: http://www.jb51.net/article/15330.htm 安装好以后,来到 phpMyAdmin 的首页如下图所示: 二.创建用户(如何您之前已经创建好用户,可以省略这一步) 点击上图所示的权限后,可以看到如下图所示: 点击"添加新用户"这个连接,添加一个新的数据库用户名 如下图所示: 三.权限设置 如下图所示: 编辑 hellen 这个用户的权限 如下图所示: 其中增加用户的同时也可以填写用

MySQL中导出用户权限设置的脚本分享

在对MySQL数据库进行迁移的时候,有时候也需要迁移源数据库内的用户与权限.对于这个迁移我们可以从mysql.user表来获取用户的相关权限来生成相应的SQL语句,然后在目标服务器上来执行生成的SQL语句即可.本文提供了生成提取用户权限的脚本并给出演示. 1.生成用户权限的脚本 复制代码 代码如下: [root@HKBO ~]# more exp_grant.sh  #!/bin/bash  #Function export user privileges    pwd=123456  expg

Mysql中新建用户及授权的方法分享

在项目开发的过程中可能需要开放自己的数据库给别人,但是为了安全不能自己服务器里其他数据库同时开放.那么可以新建一个用户,给该用户开放特定数据库权限 测试环境:Centos 6.3和Mysql 5.3 一.新建用户 复制代码 代码如下: //登录MYSQL @>mysql -u root -p @>密码 //创建用户 mysql> insert into mysql.user(Host,User,Password) values("localhost","cp

Win9X注册表内的安全和用户权限设置

我是玩机的狂热一族,喜欢有事无事的在系统中折腾,我发现Win9X的注册表中保存了许多重要的系统信息,Windows中有关安全和用户权限设置也在其中.于是我深入注册表中,经过一段时间的摸索后,找出了Win9X注册表中有关安全和用户权限的设置的一些要点,我现在告诉大家,目的是想让大家对注册表和Win 9X系统的安全性有更深入的认识,使大家可以更好地维护系统安全. 一.限制控制面板1. 打开注册表 中的主键[HKEY_USERS\"用户名"\Software\Microsoft\Window

详解VueJS应用中管理用户权限

在需要身份验证的前端应用里,我们经常想通过用户角色来决定哪些内容可见.比如,游客身份可以阅读文章,但注册用户或管理员才能看到编辑按钮. 在前端中管理权限可能会有点麻烦.你之前可能写过这样的代码: if (user.type === ADMIN || user.auth && post.owner === user.id ) { ... } 作为代替方案,一个简洁轻量的库--CASL--可以让管理用户权限变得非常简单.只要你用CASL定义了权限,并设置了当前用户,就可以把上面的代码改为这样:

Linux下SFTP用户权限设置条件及实现命令

众所周知SFTP账号是基于SSH账号的,所以在默认情况下访问服务器的权限是非常大的,今天的教程就是教大家进行SFTP用户权限设置. 必要条件: 你的openssh-server版本至少得失4.8p1, 因为配置权限需要版本添加的新配置项ChrootDirectory来完成. 如何查看自己服务器上的ssh版本?大家可以尝试以下命令: $ ssh -V 具体实施步骤: 1. 我们需要创建一个用户组,专门用于sftp用户 $ groupadd sftpusers 2. 我们创建一个用户test $ u

详解MySQL中的存取权限

看到很多网友提出关于MySQL登录不上服务器的问题,包括有的是在PHP中调用MySQL时发生的不能登录MySQL数据库服务器的问题,以为是PHP出了问题.其实是MySQL权限的问题. MySQL的权限系统在MySQL的手册中是很长的一章,我把它打印出来足足印了20多页!这里就将我对它的理解简要地写出来,希望能对刚刚接触MySQL的同志有点帮助:有说得不对的地方,也请同志们指出. 在我了解了MySQL的权限机制后,不由得不赞叹它的严密与巧妙:也许所有的数据库系统都是如此罢,只是别的大型数据库把权限

sql server 2005用户权限设置深入分析

关于什么是用户权限,最简单的定义可能是,"用户能做什么和不能做什么."在这里,简单的定义就相当不错了. 用户的权限分为3类: l 登录的权限: l 访问特定数据库的权限: l 在数据库中具体的对象上执行特定操作的权限. 既然我们已经看过了创建登录账户,这里将把重点放在登录账户能够拥有的特定权限上. 22.3.1 授予访问特定数据库的权限 如果想要一个用户可以访问数据库,你需要做的第一件事情是授予用户访问那个数据库的权限.可以在Management Studio中,通过把用户加入到服务器

IIS6.0的默认权限和用户权限设置小结

NTFS 权限 目录 用户\组 权限 %windir%\help\iishelp\common Administrators 完全控制 %windir%\help\iishelp\common System 完全控制 %windir%\help\iishelp\common IIS_WPG 读取.执行 %windir%\help\iishelp\common Users(请参见"注意 1".) 读取.执行 %windir%\IIS Temporary Compressed Files

复杂系统中的用户权限数据库设计解决方案

B/S系统中的权限比C/S中的更显的重要,C/S系统因为具有特殊的客户端,所以访问用户的权限检测可以通过客户端实现或通过客户端+服务器检测实现,而B/S中,浏览器是每一台计算机都已具备的,如果不建立一个完整的权限检测,那么一个"非法用户"很可能就能通过浏览器轻易访问到B/S系统中的所有功能.因此B/S业务系统都需要有一个或多个权限系统来实现访问权限检测,让经过授权的用户可以正常合法的使用已授权功能,而对那些未经授权的"非法用户"将会将他们彻底的"拒之门外&

mysql语句查询用户权限过程详解

在MySQL中,如何查看一个用户被授予了那些权限呢? 授予用户的权限可能分全局层级权限.数据库层级权限.表层级别权限.列层级别权限.子程序层级权限.具体分类如下: 全局层级 全局权限适用于一个给定服务器中的所有数据库.这些权限存储在mysql.user表中.GRANT ALL ON *.*和REVOKE ALL ON *.*只授予和撤销全局权限. 数据库层级 数据库权限适用于一个给定数据库中的所有目标.这些权限存储在mysql.db和mysql.host表中.GRANT ALL ON db_na