当成功创建用户账户后,还不能执行任何操作,需要为该用户分配适当的访问权限。可以使用 SHOW GRANT FOR 语句来查询用户的权限。

注意:新创建的用户只有登录 MySQL 服务器的权限,没有任何其他权限,不能进行其他操作。

USAGE ON*.* 表示该用户对任何数据库和任何表都没有权限。

授予用户权限

对于新建的 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) <列名>

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

2) ON 子句

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

3) <权限级别>

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

  • 列权限,和表中的一个具体列相关。例如,可以使用 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 指定存储过程名或函数名。
  • TO 子句:用来设定用户口令,以及指定被赋予权限的用户 user。若在 TO 子句中给系统中存在的用户指定口令,则新密码会将原密码覆盖;如果权限被授予给一个不存在的用户,MySQL 会自动执行一条 CREATE USER 语句来创建这个用户,但同时必须为该用户指定口令。

GRANT语句中的<权限类型>的使用说明如下:

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:表示以上所有权限。

2) 授予表权限时,<权限类型>可以指定为以下值:

  • SELECT:授予用户可以使用 SELECT 语句进行访问特定表的权限。
  • INSERT:授予用户可以使用 INSERT 语句向一个特定表中添加数据行的权限。
  • DELETE:授予用户可以使用 DELETE 语句从一个特定表中删除数据行的权限。
  • DROP:授予用户可以删除数据表的权限。
  • UPDATE:授予用户可以使用 UPDATE 语句更新特定数据表的权限。
  • ALTER:授予用户可以使用 ALTER TABLE 语句修改数据表的权限。
  • REFERENCES:授予用户可以创建一个外键来参照特定数据表的权限。
  • CREATE:授予用户可以使用特定的名字创建一个数据表的权限。
  • INDEX:授予用户可以在表上定义索引的权限。
  • ALL 或 ALL PRIVILEGES:所有的权限名。

3) 授予列权限时,<权限类型>的值只能指定为 SELECT、INSERT 和 UPDATE,同时权限的后面需要加上列名列表 column-list。

4) 最有效率的权限是用户权限。

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

  • CREATE USER:表示授予用户可以创建和删除新用户的权限。
  • SHOW DATABASES:表示授予用户可以使用 SHOW DATABASES 语句查看所有已有的数据库的定义的权限。

【实例】使用 GRANT 语句创建一个新的用户 testUser,已经为大家精心准备了大数据的系统学习资料,从Linux-Hadoop-spark-......,需要的小伙伴可以点击密码为 testPwd。用户 testUser 对所有的数据有查询、插入权限,并授予 GRANT 权限。输入的 SQL 语句和执行过程如下所示。

  mysql> GRANT SELECT,INSERT ON *.*      -> TO 'testUser'@'localhost'      -> IDENTIFIED BY 'testPwd'      -> WITH GRANT OPTION;  Query OK, 0 rows affected, 1 warning (0.05 sec)

使用 SELECT 语句查询用户 testUser 的权限,如下所示。

  mysql> SELECT Host,User,Select_priv,Grant_priv      -> FROM mysql.user      -> WHERE User='testUser';  +-----------+----------+-------------+------------+  | Host      | User     | Select_priv | Grant_priv |  +-----------+----------+-------------+------------+  | localhost | testUser | Y           | Y          |  +-----------+----------+-------------+------------+  1 row in set (0.01 sec)

MySQL用户授权(GRANT)相关推荐

  1. MySQL用户授权(GRANT)语法介绍和示例

    1.MySQL用户授权(GRANT)语法 当成功创建用户账户后,还不能执行任何操作,需要为该用户分配适当的访问权限.可以使用 SHOW GRANT FOR 语句来查询用户的权限. 注意:新创建的用户只 ...

  2. 【数据库】 mysql用户授权详解

    目录 MySQL用户授权 一,密码策略 1,查看临时密码 2,查看数据库当前密码策略: 二, 用户授权和撤销授权 1.创建用户 2,删除用户 3,授权和回收权限 MySQL用户授权 一,密码策略 my ...

  3. 给mysql用户授权命令_mysql添加用户并授权的命令(示例)

    本节内容: mysql用户授权命令与mysql常用命令. 1,新建(添加)用户. 复制代码 代码示例: //登录MYSQL >mysql -u root -p >密码 //创建用户 mys ...

  4. revoke mysql_浅谈MySQL中授权(grant)和撤销授权(revoke)用法详解

    MySQL 赋予用户权限命令的简单格式可概括为: grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删除 数据库中所有表数据的权利 grant selec ...

  5. mysql revoke 授权_浅谈MySQL中授权(grant)和撤销授权(revoke)用法详解

    MySQL 赋予用户权限命令的简单格式可概括为: grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删除 数据库中所有表数据的权利 grant selec ...

  6. mysql数据库用户授权_MySQL数据库用户授权(GRANT)

    在对 MySQL 的日常管理和实际操作中,为了数据库的安全,避免恶意用户使用 root 账号控制数据库,我们通常会创建一系列具备适当权限的账号.这样,我们就可以不用或少用 root 账号登录NySQL ...

  7. mysql 用户授权_mysql添加、删除用户和授权用户

    MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束): 1.新建用户 1.1 登录MYSQL: @>mysql -u root -p @&g ...

  8. mysql 用户授权

    grant 权限 on 库名.表名 to 用户@"客户端地址" identified by '密码' [with grant option] with grant option 让 ...

  9. mysql用户授权开发者_Mysql添加用户与授权

    CentOS Linux release 7.5.1804 (Core) mysql Ver 14.14 Distrib 5.7.22, for Linux (x86_64) using EditLi ...

最新文章

  1. 拼多多“砍价免费拿”始终差“0.09%”遭起诉,官方回应:活动真实
  2. php expat+DOM+SimpleXML XML读取
  3. C 不重复地输出升序数组中的元素
  4. cocos2d-x初探学习笔记(11)--拖动间隐效果
  5. MySQL异步复制延迟解决的架构设计与运维架构ppt
  6. 怎么把桌面计算机隐藏文件,怎么隐藏桌面文件夹名称?隐藏桌面图标下的文字的详细教程...
  7. math库是python语言的数学模块_Python 数学模块(Math)
  8. Java案例:Log4J基本使用
  9. Socket编程Http下载的简单实现
  10. 必杀技———SQL基础整理系列(一)
  11. 【html和css入门】实现简单的页首导航
  12. 期货交易中的一些术语
  13. 计算机毕业设计asp.net193酒店客房预订网站系统
  14. ps懒人一键智能AI磨皮插件 去除皮肤瑕疵
  15. voc旋转标注数据转dota类型
  16. C语言经典100例(9)——要求输出国际象棋棋盘。
  17. 程序退出,段错误segment default问题定位
  18. WiFi信号图标等级计算
  19. 学习笔记——Kaggle_Digit Recognizer (SVM算法 Python实现)
  20. 工业互联网企业蘑菇物联获数千万元A轮融资,元禾原点资本领投

热门文章

  1. ML之LoR:基于LoR(逻辑回归)算法对乳腺癌肿瘤(9+1)进行二分类预测(良/恶性)
  2. TF:利用TF的train.Saver将训练好的W、b模型文件保存+新建载入刚训练好模型(用于以后预测新的数据)
  3. sklearn中的分类决策树
  4. JAVA_OA(六):SpringMVC处理异常
  5. 导数,微积分,牛顿运动学制作创意地图
  6. [学习笔记]圆方树广义圆方树
  7. 数组作为形参时的一个陷阱
  8. CentOs下搭建GitLab
  9. 详述JavaScript数组
  10. POJ2301+水~~~~~~