mysql的用户与权限

本篇博客来讨论如何在mysql中创建用户并授予权限。当然,为了逻辑的完整性,你可以创建用户,就得能删除用户、重命名用户、重置密码等,你可以给用户授予权限,就得能给用户修改权限以及收回权限,这些内容都会包括在本篇博客中。

先来看一个简单的例子,如果你只是想简单地创建一个用户并赋予它所有的权限,可以简单地执行下面这个语句

mysql> grant all privileges on *.* to 'kite'@'%' identified by 'kitepassword';

它会创建一个名为kite的用户,密码是kitepassword,拥有所有数据库的所有权限,可以从所有地方连接到mysql server(前提是my.cnf文件中设置了bind-address)。如果你想知道更多细节,那么继续往下看。

创建用户

创建用户的语法如下

CREATE USER 'name'@'from-where' IDENTIFIED BY 'password'

创建用户的时候,你要指明三件事情:

  1. 用户名叫啥
  2. 可以从哪里登录到mysql server
  3. 登录密码是什么

其中,限制用户可以从哪里连接进来,可以有效地提高mysql的安全性。下面来看几个例子例子

CREATE USER 'super'@'localhost' IDENTIFIED BY 'password'

上面创建了一个名叫super的用户,只能从本机连接到mysql server。

CREATE USER 'super'@'192.168.1.%' IDENTIFIED BY 'password'

上面创建了一个名叫super的用户,可以从192.168.1.%这个网段内登录,这个网段一般是局域网。%是一个通配符,用法跟like的用法差不多。

CREATE USER 'super'@'%' IDENTIFIED BY 'password'

上面创建了一个名叫super的用户,可以从任何地方登录。

CREATE USER只决定了用户是否能够登录到mysql server,以及如何登录到mysql server,至于用户登录到mysql server以后可以做些什么,是由GRANT语句来指定的,下面来看一下。

分配权限

分配权限的完整语法如下

GRANT privileges (columns)  
ON what  
TO account [IDENTIFIED BY 'password']
[REQUIRE encryption requirements]
[WITH grant or resource management options];

该命令可以一个用户分配权限,如果该用户不存在,则可以直接创建该用户。如果存在该用户,则可以改变现有的权限。

这个语句要指明这几件事:

  1. 分配哪些权限(允许用户执行哪些操作,如:select, update, delete, alter , create , drop table等)
  2. 权限可以作用在哪些对象。例如,作用到一个数据库,一个数据表,或者所有数据库(全局权限)
  3. 分配给哪个用户
  4. 该用户的密码(可用于分配权限时直接创建用户,也可以用作修改密码)
  5. 是否需要安全连接(SSL),可省略,默认不需要。
  6. 是否允许该用户给别的用户授权,可省略,默认不允许。
  7. 是否限制该用户的访问频率或访问次数,可省略,默认不限制。

下面来分别讨论这几个问题。

可以分配哪些权限

mysql的权限大致可以分为数据库管理权限和数据库对象操作权限,数据库管理权限包括create user,replication slave,reload,super,grant option等权限,执行这些命令时不需要指明数据库对象。其余的权限如:select, update, delete, alter , create , drop table等,是要在特定的数据库对象上进行操作的。除此之外,还有两个特殊的权限,分别是all privileges和usage权限。all privileges包括除了grant option以外的所有权限,usage的意思是没有权限,在修改权限时经常会用到。

需要注意的是,用户的权限本身和权限的级别(on what)是息息相关的,例如,一个用户具有某个数据库级别的所有权限,但他并不能执行create user命令,原因是create user属于数据库管理权限,需要有全局的权限才可以。下面来说一下权限的级别

权限的级别

权限的级别决定了权限可以做用到哪些数据库对象上,共包含以下几种级别:全局级别,数据库级别,表级别,以及数据列级别。

  • 分配全局权限:on *.*
  • 分配数据库级权限:on db1.*
  • 分配表级别权限:on db1.table1

查看权限

查看当前用户权限

show grants;

查看某个用户的权限

show grants for user

撤销权限

撤销权限的方式和分配权限的方式非常类似

revoke privileges on what from account;

修改密码

修改密码可以使用赋予usage权限的方式来重复设置密码,例如:

grant usage on *.* to acount identified by 'newpass';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值