在对 MySQL 的日常管理和实际操作中,为了数据库的安全,避免恶意用户使用 root 账号控制数据库,我们通常会创建一系列具备适当权限的账号.这样,我们就可以不用或少用 root 账号登录NySQL数据库,在一定程度上确保数据的安全访问.本文介绍MySQL数据库如何对用户进行授权.

授予用户权限

对于新建的 MySQL 用户,必须给它授权,可以用 GRANT 语句来实现对新建用户的授权.

语法格式:GRANT

[ (  ) ] [ ,  [ (  ) ] ]

ON   TO

其中的格式:

[ IDENTIFIED ] BY [ PASSWORD ]

[ WITH GRANT OPTION]

| MAX_QUERIES_PER_HOUR

| MAX_UPDATES_PER_HOUR

| MAX_CONNECTIONS_PER_HOUR

| MAX_USER_CONNECTIONS

语法说明如下:

1. 权限类型

GRANT语句中的的使用说明如下:

1.1 授予数据库权限时,可以指定为以下值:

SELECT: 表示授予用户可以使用 SELECT 语句访问特定数据库中所有表和视图的权限.

INSERT: 表示授予用户可以使用 INSERT 语句向特定数据库中所有表添加数据行的权限.

DELETE: 表示授予用户可以使用 DELETE 语句删除特定数据库中所有表的数据行的权限.

UPDATE: 表示授予用户可以使用 UPDATE 语句更新特定数据库中所有数据表的值的权限.

REFERENCES: 表示授予用户可以创建指向特定的数据库中的表外键的权限.

CREATE: 表示授权用户可以使用 CREATE TABLE 语句在特定数据库中创建新表的权限.

ALTER: 表示授予用户可以使用 ALTER TABLE 语句修改特定数据库中所有数据表的权限.

SHOW VIEW: 表示授予用户可以查看特定数据库中已有视图的视图定义的权限.

CREATE ROUTINE: 表示授予用户可以为特定的数据库创建存储过程和存储函数的权限.

ALTER ROUTINE: 表示授予用户可以更新和删除数据库中已有的存储过程和存储函数的权限.

INDEX: 表示授予用户可以在特定数据库中的所有数据表上定义和删除索引的权限.

DROP: 表示授予用户可以删除特定数据库中所有表和视图的权限.

CREATE TEMPORARY TABLES: 表示授予用户可以在特定数据库中创建临时表的权限.

CREATE VIEW: 表示授予用户可以在特定数据库中创建新的视图的权限.

EXECUTE ROUTINE: 表示授予用户可以调用特定数据库的存储过程和存储函数的权限.

LOCK TABLES: 表示授予用户可以锁定特定数据库的已有数据表的权限.

ALL 或 ALL PRIVILEGES: 表示以上所有权限.

1.2 授予表权限时,可以指定为以下值:

SELECT: 授予用户可以使用 SELECT 语句进行访问特定表的权限.

INSERT: 授予用户可以使用 INSERT 语句向一个特定表中添加数据行的权限.

DELETE: 授予用户可以使用 DELETE 语句从一个特定表中删除数据行的权限.

DROP: 授予用户可以删除数据表的权限.

UPDATE: 授予用户可以使用 UPDATE 语句更新特定数据表的权限.

ALTER: 授予用户可以使用 ALTER TABLE 语句修改数据表的权限.

REFERENCES: 授予用户可以创建一个外键来参照特定数据表的权限.

CREATE: 授予用户可以使用特定的名字创建一个数据表的权限.

INDEX: 授予用户可以在表上定义索引的权限.

ALL 或 ALL PRIVILEGES: 所有的权限名.

1.3 授予列权限时,的值只能指定为 SELECT、INSERT 和 UPDATE,同时权限的后面需要加上列名列表 column-list.

1.4 最有效率的权限是用户权限

授予用户权限时,除了可以指定为授予数据库权限时的所有值之外,还可以是下面这些值:

CREATE USER: 表示授予用户可以创建和删除新用户的权限.

SHOW DATABASES: 表示授予用户可以使用 SHOW DATABASES 语句查看所有已有的数据库的定义的权限.

2. 列名

可选项.用于指定权限要授予给表中哪些具体的列.

3. ON 子句

用于指定权限授予的对象类型和级别,如在 ON 关键字后面给出要授予权限的数据库名或表名等.

4. 权限级别

用于指定权限的级别.可以授予的权限有如下几组:

列权限,和表中的一个具体列相关.例如,可以使用 UPDATE 语句更新表 students 中 student_name 列的值的权限.

表权限,和一个具体表中的所有数据相关.例如,可以使用 SELECT 语句查询表 students 的所有数据的权限.

数据库权限,和一个具体的数据库中的所有表相关.例如,可以在已有的数据库 mytest 中创建新表的权限.

用户权限,和 MySQL 中所有的数据库相关.例如,可以删除已有的数据库或者创建一个新的数据库的权限.

对应地,在 GRANT 语句中可用于指定权限级别的值有以下几类格式:

*: 表示当前数据库中的所有表.

*.*: 表示所有数据库中的所有表.

db_name.*: 表示某个数据库中的所有表,db_name 指定数据库名.

db_name.tbl_name: 表示某个数据库中的某个表或视图,db_name 指定数据库名,tbl_name 指定表名或视图名.

tbl_name: 表示某个表或视图,tbl_name 指定表名或视图名.

db_name.routine_name: 表示某个数据库中的某个存储过程或函数,routine_name 指定存储过程名或函数名.

5. TO 子句:用来设定用户口令,以及指定被赋予权限的用户 user

如果在 TO 子句中给系统中存在的用户指定口令,则新密码会将原密码覆盖;

如果权限被授予给一个不存在的用户,MySQL 会自动执行一条 CREATE USER 语句来创建这个用户,但同时必须为该用户指定口令.

举例:

使用 GRANT 语句创建一个新的用户 neil,密码为 123456.用户 neil 对所有的数据有查询、插入权限,并授予 GRANT 权限.输入的 SQL 语句和执行过程如下所示:// 创建用户neil,密码为123456,对所有数据有查询、删除权限并授予GRANT权限

GRANT SELECT,INSERT ON *.* TO 'neil'@'localhost'IDENTIFIED BY '123456' WITH GRANT OPTION;

// 刷新权限表

FLUSH PRIVILEGES;

执行完上述语句后,使用neil用户登录数据库,检测可以发现用户只有查询SELECT 和 插入 INSERT 的权限,执行其他操作如删除DELETE 或更新UPDATE时会出错.

mysql数据库用户授权_MySQL数据库用户授权(GRANT)相关推荐

  1. mysql怎么增添数据_MySQL数据库怎么增添新用户

    有2个不同的方法增加用户:通过使用GRANT语句或通过直接操作MySQL授权表.比较好的方法是使用GRANT语句,因为他们是更简明并且好像错误少些. 下面的例子显示如何使用MySQL客户安装新用户.这 ...

  2. mysql 全局select授权_MySQL的用户设置与授权

    你可以有2个不同的方法增加用户:通过使用GRANT语句或通过直接操作MySQL授权表  .比较好的方法是使用GRANT语句,因为他们是更简明并且好像错误少些  . 使用SHOW GRANTS语句显示用 ...

  3. mysql创建管理密码_mysql 创建用户与授权、修改密码

    一, 创建用户: CREATE USER用于创建新的MySQL账户.要使用CREATE USER,您必须拥有mysql数据库的全局CREATE USER权限,或拥有INSERT权限.对于每个账户,CR ...

  4. mysql建库权限_mysql数据库用户权限及建库脚本

    /* 创建系统数据库mydatabasename */ drop database if exists mydatabasename; create database mydatabasename; ...

  5. mysql如何创建用户代码_MySQl创建用户和授权的方法介绍(代码示例)

    本篇文章给大家带来的内容是关于MySQl创建用户和授权的方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 权限的管理:如何创建用户和密码 给当前的用户授权 移除当前 ...

  6. mysql计算折纸_mysql数据库的创建和授权

    mysql数据库的创建和字符集的指定# utf8 字符集 create database `dbname` default character set utf8 collate utf8_genera ...

  7. mysql 删除 修改密码_MySQL新建用户,授权,删除用户,修改密码

    测试环境:WIN32 mysql5.0.45 首先要声明一下:一般情况下,修改MySQL密码,授权,是需要有mysql里的root权限的. 注:本操作是在WIN命令提示符下,phpMyAdmin同样适 ...

  8. mysql建用户无密码_mysql 新建用户,授权,删除用户,修改密码

    一.用户基本操作 1.创建用户 登陆: mysql> mysql -u root -p 新建用户 mysql> CREATE USER test IDENTIFIED BY '123456 ...

  9. mysql赋予用户数据库所有权限_MySQL 数据库赋予用户权限操作表

    MySQL清空数据库的操作:truncate table tablename; MySQL 赋予用户权限命令的简单格式可概括为:grant 权限 on 数据库对象 to 用户 一.grant 普通数据 ...

最新文章

  1. 厉害了!这支获得国家级荣誉的智能车队
  2. js/jq进行日期格式化为:yyyy-MM-dd 如2017-05-08
  3. C# 跨平台的支付类库ICanPay
  4. spring学习(40):注入数组类型
  5. 用TortoiseGit时的实用git命令
  6. 【转载】OpenStack Swift学习笔记
  7. 《机器人学经典教程》——2.1 控制理论
  8. android alphaanimation xml,android AlphaAnimation动画代码实现与XML实现
  9. 微型计算机期末总结卷首语,个人总结卷首语.doc
  10. 平面设计版式构成实用技巧
  11. python假分数约分_数学中假分数怎么约分
  12. Ansible最佳实践之委派任务和事实
  13. Spark大数据分与实践笔记(第二章 Spark基础-03)
  14. QML 导入ttf图标库
  15. 一篇文章带你解决 MongoDB 连接 localhost 和 127.0.0.1 可以连接,但是改成具体的IP地址就无法连接
  16. 关于Could not find method javacompileOptions() for arguments
  17. Vue CLI3不兼容IE11打开空白报错SCRIPT1003: 缺少 ‘:‘
  18. 目前市面上量化交易软件、平台、框架的特点, 重点推荐VNPY底层仿真回测系统
  19. daimadaima
  20. java 用于xcopy复制_利用xcopy命令实现本地文件复制到远程服务器的方法

热门文章

  1. 详述激光三角测距法原理
  2. Javasocket服务端持久化,持续更新中
  3. 旅行世界显示服务器繁忙,旅行世界,玩法介绍!无充值入口,每日遛狗赚
  4. java体系学习总结记录——超长篇
  5. SAP ABAP 初学者编程 – 在线培训
  6. Android OTA 升级之一:编译升级包
  7. 复古风手绘女生头像,​真的不要太好看​ !
  8. 电力线上网的新闻回顾:中电飞华被叫停(2003年07月11日)
  9. Android Studio 常用快捷键
  10. [论文阅读]Neural Machine Translation By Jointly Learning to Align and Translate