热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

小白学习MySQL不同版本创建用户的些许区别

小白学习MySQL-不同版

MySQL创建用户有很多种方法,例如常规create user,再通过grant,授予权限,还可直接grant连带创建用户和授权一起做了。最近创建过程中,发现不同版本操作有些区别。

MySQL 5.7官方手册,给出了创建用户的操作步骤,

https://dev.mysql.com/doc/refman/5.7/en/grant.html

但实际上,grant带着identified by是可以的,

    mysql> select version();
    +------------+
    | version() |
    +------------+
    | 5.7.32-log |
    +------------+
    1 row in set (0.02 sec)

    mysql> create user test identified by 'test';
    Query OK, 0 rows affected (0.00 sec)

    mysql> grant all privileges on `mysql`.* to 'test'@'%' identified by 'test';
    Query OK, 0 rows affected, 1 warning (0.00 sec)

    mysql> show grants for 'test'@'%';
    +-------------------------------------------------+
    | Grants for test@% |
    +-------------------------------------------------+
    | GRANT USAGE ON *.* TO 'test'@'%' |
    | GRANT ALL PRIVILEGES ON `mysql`.* TO 'test'@'%' |
    +-------------------------------------------------+
    2 rows in set (0.00 sec)

    MySQL 8.0官方手册上,给出的操作步骤基本和5.7是相同的,

    https://dev.mysql.com/doc/refman/8.0/en/grant.html

    但是执行的时候,grant如果加上identified by,就会提示语法存在错误,

      mysql> select version();
      +-----------+
      | version() |
      +-----------+
      | 8.0.23 |
      +-----------+
      1 row in set (0.00 sec)

      mysql> create user test identified by 'test';
      Query OK, 0 rows affected (0.01 sec)

      mysql> grant all privileges on `mysql`.* to 'test'@'%' identified by 'test';
      ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by 'test'' at line 1

      其实这对create user和grant分开执行的场景没什么影响,无非是多个少个identified by的问题,但是如果通过grant将创建用户和授权一起执行的场景,就会有些影响,例如5.7中,可以通过grant达到创建用户和授权的效果,当然,这个受sql_mode中的参数NO_AUTO_CREATE_USER的控制,如果指定了,就是允许如下的操作,

        mysql> grant all privileges on `mysql`.* to 'testdb'@'%' identified by 'testdb';
        Query OK, 0 rows affected, 1 warning (0.01 sec)

        mysql> show grants for 'testdb'@'%';
        +---------------------------------------------------+
        | Grants for testdb@% |
        +---------------------------------------------------+
        | GRANT USAGE ON *.* TO 'testdb'@'%' |
        | GRANT ALL PRIVILEGES ON `mysql`.* TO 'testdb'@'%' |
        +---------------------------------------------------+
        2 rows in set (0.00 sec)

        但是8.0中,这个操作,就会提示错误,

          mysql> grant all privileges on `mysql`.* to 'testdb'@'%' identified by 'testdb';
          ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by 'testdb'' at line 1

          这个应该和8.0的特性相关,如文档所说,从8.0.11开始,就删除了sql_mode中NO_AUTO_CREATE_USER参数,

          https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html

          因此对他来说,这是正常现象。至于设计原因,我猜还是想让用户创建的过程更标准、更加原子性,一个操作,就做一件事,出错的几率,就更可控。

          小白学习MySQL,

          《小白学习MySQL - 随机插入测试数据的工具》

          《小白学习MySQL - varchar类型字段为什么经常定义成255?》

          《小白学习MySQL - 变通创建索引的案例一则》

          小白学习MySQL - “投机取巧”统计表的记录数

          小白学习MySQL - 一次慢SQL的定位

          小白学习MySQL - TIMESTAMP类型字段非空和默认值属性的影响

          《小白学习MySQL - 聊聊数据备份的重要性》

          《小白学习MySQL - InnoDB支持optimize table?》

          《小白学习MySQL - table_open_cache的作用》

          《小白学习MySQL - 表空间碎片整理方法》

          《小白学习MySQL - 大小写敏感问题解惑》

          《小白学习MySQL - only_full_group_by的校验规则》

          小白学习MySQL - max_allowed_packet

          《小白学习MySQL - mysqldump保证数据一致性的参数差异》

          小白学习MySQL - 查询会锁表?

          《小白学习MySQL - 索引键长度限制的问题》

          《小白学习MySQL - MySQL会不会受到“高水位”的影响?》

          《小白学习MySQL - 数据库软件和初始化安装》

          《小白学习MySQL - 闲聊聊》

          近期更新的文章:

          《最近碰到的问题》

          《Linux进程信息的检索》

          《OCR解析健康宝图片》

          《MySQL和Oracle在索引名称唯一性方面的不同设计》

          《Linux环境监控工具基础参考》


          文章分类和索引:

          《公众号900篇文章分类和索引》



          推荐阅读
          • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
            在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
          • 本文详细介绍了在MySQL中如何高效利用EXPLAIN命令进行查询优化。通过实例解析和步骤说明,文章旨在帮助读者深入理解EXPLAIN命令的工作原理及其在性能调优中的应用,内容通俗易懂且结构清晰,适合各水平的数据库管理员和技术人员参考学习。 ... [详细]
          • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
          • 微信小程序实现类似微博的无限回复功能,内置云开发数据库支持
            本文详细介绍了如何利用微信小程序实现类似于微博的无限回复功能,并充分利用了微信云开发的数据库支持。文中不仅提供了关键代码片段,还包含了完整的页面代码,方便开发者按需使用。此外,HTML页面中包含了一些示例图片,开发者可以根据个人喜好进行替换。文章还将展示详细的数据库结构设计,帮助读者更好地理解和实现这一功能。 ... [详细]
          • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
            在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
          • Oracle ERP系统用户指南:涵盖MRP模块详细操作说明
            《Oracle ERP系统用户指南》详细介绍了MRP模块的操作流程与功能。该手册涵盖了从基础设置到高级应用的全方位指导,旨在帮助用户高效地管理和优化物料需求计划。文档编号、受控状态及生效日期等信息均在手册中明确标注,确保内容的准确性和时效性。编制人忻滢对内容进行了全面审核与确认,以保障用户的使用体验。 ... [详细]
          • 在Linux系统中避免安装MySQL的简易指南
            在Linux系统中避免安装MySQL的简易指南 ... [详细]
          • 本文深入解析了通过JDBC实现ActiveMQ消息持久化的机制。JDBC能够将消息可靠地存储在多种关系型数据库中,如MySQL、SQL Server、Oracle和DB2等。采用JDBC持久化方式时,数据库会自动生成三个关键表:`activemq_msgs`、`activemq_lock`和`activemq_ACKS`,分别用于存储消息数据、锁定信息和确认状态。这种机制不仅提高了消息的可靠性,还增强了系统的可扩展性和容错能力。 ... [详细]
          • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
          • 本文详细介绍了在 Oracle 数据库中使用 MyBatis 实现增删改查操作的方法。针对查询操作,文章解释了如何通过创建字段映射来处理数据库字段风格与 Java 对象之间的差异,确保查询结果能够正确映射到持久层对象。此外,还探讨了插入、更新和删除操作的具体实现及其最佳实践,帮助开发者高效地管理和操作 Oracle 数据库中的数据。 ... [详细]
          • Amoeba 通过优化 MySQL 的读写分离功能显著提升了数据库性能。作为一款基于 MySQL 协议的代理工具,Amoeba 能够高效地处理应用程序的请求,并根据预设的规则将 SQL 请求智能地分配到不同的数据库实例,从而实现负载均衡和高可用性。该方案不仅提高了系统的并发处理能力,还有效减少了主数据库的负担,确保了数据的一致性和可靠性。 ... [详细]
          • 本文详细介绍了在Linux系统上编译安装MySQL 5.5源码的步骤。首先,通过Yum安装必要的依赖软件包,如GCC、GCC-C++等,确保编译环境的完备。接着,下载并解压MySQL 5.5的源码包,配置编译选项,进行编译和安装。最后,完成安装后,进行基本的配置和启动测试,确保MySQL服务正常运行。 ... [详细]
          • 阿里云MySQL与Oracle数据库的主从复制技术详解 ... [详细]
          • 尽管我们尽最大努力,任何软件开发过程中都难免会出现缺陷。为了更有效地提升对支持部门的协助与支撑,本文探讨了多种策略和最佳实践,旨在通过改进沟通、增强培训和支持流程来减少这些缺陷的影响,并提高整体服务质量和客户满意度。 ... [详细]
          • 如何使用mysql_nd:Python连接MySQL数据库的优雅指南
            无论是进行机器学习、Web开发还是爬虫项目,数据库操作都是必不可少的一环。本文将详细介绍如何使用Python通过 `mysql_nd` 库与 MySQL 数据库进行高效连接和数据交互。内容涵盖以下几个方面: ... [详细]
          author-avatar
          王丽丽2502934407
          这个家伙很懒,什么也没留下!
          PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
          Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有