首页 > 数据库 >MySQL 8 剪切或拷贝用户创建语句

MySQL 8 剪切或拷贝用户创建语句

时间:2023-12-29 19:44:35浏览次数:39  
标签:PASSWORD DEFAULT CREATE myadmin user MySQL 拷贝 剪切 USER

有时,查看用户创建语句并将其复制到另一个数据库会很方便。

比如在 MySQL 7 中:

mysql> show create user mytest@'%'\G
*************************** 1. row ***************************
CREATE USER for mytest@%: CREATE USER 'mytest'@'%' IDENTIFIED WITH 'mysql_native_password' AS '*DCBCF2313F708DB5A8A1DE2hg4D12AC055AD821A' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK
1 row in set (0.00 sec)

 

不过,由于 MySQL 8.0 默认使用了新的验证方法(cache_sha2_password),这可能会成为一场噩梦,因为输出 binary 格式的数据时,根据使用的终端和字体不同,某些字节可能会被隐藏或解码。

让我们来看看:

>show create user myadmin@'%'\G
*************************** 1. row ***************************
CREATE USER for myadmin@%: CREATE USER `myadmin`@`%` IDENTIFIED WITH 'caching_sha2_password' AS '$A$005$<^U\Z@Tfg\n\r^;;cZmLCjbk.f2FDkyHuUeaxQmhTZgtR0EdS4.fqRK6iUUl2' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK PASSWORD HISTORY DEFAULT PASSWORD REUSE INTERVAL DEFAULT PASSWORD REQUIRE CURRENT DEFAULT
1 row in set (0.01 sec)

把该语句剪切到其它实例执行,就会报错:

>CREATE USER `myadmin`@`%` IDENTIFIED WITH 'caching_sha2_password' AS '$A$005$<^U\Z@Tfg\n\r^;;cZmLCjbk.f2FDkyHuUeaxQmhTZgtR0EdS4.fqRK6iUUl2' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK PASSWORD HISTORY DEFAULT PASSWORD REUSE INTERVAL DEFAULT PASSWORD REQUIRE CURRENT DEFAULT;
ERROR 1827 (HY000): The password hash doesn't have the expected format.

要剪切和粘贴验证字符串而不会出现任何问题,解决办法是将其改为二进制表示(十六进制),如下所示:

>select user,host,authentication_string,convert(authentication_string using binary) authentication_string_bin from mysql.user where user='myadmin'\G
*************************** 1. row ***************************
                     user: myadmin
                     host: %
    authentication_string: $A$005$<^U@Tfg
^;;cZmLCjbk.f2FDkyHuUeaxQmhTZgtR0EdS4.fqRK6iUUl2
authentication_string_bin: 0x244124303035243C17175E551A405466670A0D105E3B3B1E05635A6D4C436A626B2E663246446B79487555656178516D68545A67745230456453342E6671524B366955556C32
1 row in set (0.00 sec)

然后把这里查出的值替换到上面的create user 语句就可以执行了。

CREATE USER `myadmin`@`%` IDENTIFIED WITH 'caching_sha2_password' AS '0x244124303035243C17175E551A405466670A0D105E3B3B1E05635A6D4C436A626B2E663246446B79487555656178516D68545A66645230456458842E6671524B366952256C32' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK PASSWORD HISTORY DEFAULT PASSWORD REUSE INTERVAL DEFAULT PASSWORD REQUIRE CURRENT DEFAULT;

还有一个更简单的方法。mysql 8 提供了一个选项 print_identified_with_as_hex

>set print_identified_with_as_hex=1;
Query OK, 0 rows affected (0.00 sec)

>show create user myadmin@'%';
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| CREATE USER for myadmin@%                                                                                                                                                                                                                                                                                                                                         |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| CREATE USER `myadmin`@`%` IDENTIFIED WITH 'caching_sha2_password' AS 0x244124303035243C17175E551A405466670A0D105E3B3B1E05635A6D4C436A626B2E663246446B79487555656178516D68545A66645230456458842E6671524B366952256C32 REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK PASSWORD HISTORY DEFAULT PASSWORD REUSE INTERVAL DEFAULT PASSWORD REQUIRE CURRENT DEFAULT |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

打开该选项后,就可以直接执行查询出来的 create user 语句了。

除了上面的方法,也可以安装 mysql shell 插件后来实现。插件的地址:https://github.com/lefred/mysqlshell-plugins

标签:PASSWORD,DEFAULT,CREATE,myadmin,user,MySQL,拷贝,剪切,USER
From: https://www.cnblogs.com/abclife/p/17926960.html

相关文章

  • docker中的mysql时区修改
    永久修改进入容器dockerexec-itmysql5.7bash查看当前时区date-R修改时区cp/usr/share/zoneinfo/PRC/etc/localtime#或者ln-sf/usr/share/zoneinfo/Asia/Shanghai/etc/localtime#退出exit#重启容器生效dockerrestartmysql5.7临时修改-重启失......
  • debezium+kafka实现mysql数据同步(debezium-connector-mysql)
    1.情景展示在企业当中,往往会存在不同数据库之间的表的数据需要保持一致的情况(数据同步)。如何将A库a表的数据同步至B库a表当中呢?(包含:新增、修改和删除)往往不仅仅需要保持数据的一致性,还要保证数据的即时性,即:A库a表的数据发生变化后,B库a表也能立刻同步变化。实时保持两表数据......
  • 华为云耀云服务器L实例-微人事前后端分离人力资源管理系统-mysql配置vhr数据库准备
     华为云耀云服务器L实例-微人事前后端分离人力资源管理系统-mysql配置vhr数据库准备  产品官网:https://www.huaweicloud.com/product/hecs-light.html 项目源代码地址:https://github.com/lenve/vhr  今天我们采用可靠更安全、智能不卡顿、价优随心用、上手更简......
  • mysql日期相关函数使用
    最近要经常用到mysql的日期相关函数,但以前用的少,索性总结下1DATE_FORMAT(date,format)published_at字段以datetime类型存储SELECTtitle,DATE_FORMAT(published_at,'%Y-%m-%d')FROMblog_noteWHEREDATE_FORMAT(published_at,'%Y-%m')='2023-09'    2STR_TO_DAT......
  • 安装MYSQL
    1.下载MYSQL数据库官网:https://www.mysql.com/,下载MySQLCommunityServer压缩版2.解压压缩包路径:E:\mysql-8.0.35-winx643.设置环境变量右击我的电脑,属性=》高级系统设置=》环境变量=》在系统变量中找到path,双击=》新建(环境变量)=》在解压的MYSQL目录下找到bi......
  • MariaDB VS MySQL 2023年技术总结
    专业评测报告来源于Percona,这里摘要关键部分展示二者区别。https://www.percona.com/blog/mysql-vs-mariadb-reality-check/MariaDBvs.MySQLvsPerconaServerforMySQL:一般比较MariaDB、MySQL和PerconaServerforMySQL都是非常流行的关系数据库管理系统。在下图中,我们将......
  • 导出mysql表结构设计文档word
    github上有个很好用的工具:https://github.com/msuno/export-database-structure我使用的数据库MySQL8.0.20一、下载后修改1.pom中的oracle下载失败,解决办法:注释即可,无影响<!--<dependency>--><!--<groupId>com.oracle</groupId>--><!--<artifactId>o......
  • 面试官:说一下MySQL主从复制的原理?
    MySQL主从复制(Master-SlaveReplication)是一种数据复制技术,用于在多个数据库服务器之间的数据同步。在主从复制架构中,一个服务器被设置为主服务器(Master),充当数据源,其他服务器被设置为从服务器(Slave),用来复制主服务器的数据。1.主从复制优点主从复制的主要优点有以下几个:高可......
  • 搭建lnmp环境-mysql(第五步)
    版本mysql5.7新建文件夹/data/download进入后下载wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm安装 rpm-ivhmysql57-community-release-el7-8.noarch.rpmrpm--importhttps://repo.mysql.com/RPM-GPG-KEY-mysql-2022(这里要用2022)yumin......
  • mysql字符集相关
    MySQL-Collation来源于:https://zhuanlan.zhihu.com/p/103448212本文对MySQL中的collation进行学习,参考文章Collate, Tutorial,MySQL。背景:项目中遇到字符串检索时不区分大小写的问题,后来发现是MySQL数据库中的collation设置的问题。MySQLcollation是一系列的rules,用来在......