MySQL数据库改名的三种方法

如果表是 MyISAM 那么可以直接去到数据库目录 mv 就可以。
Innodb完全不行,自己测试过,会提示相关表不存在。

第一种方法:

RENAME database olddbname TO newdbname

这个语法在 mysql-5.1.7 中被添加进来,到了mysql-5.1.23又去掉了,官方不推荐,会有丢失数据的危险!

第二种方法:

1.创建需要改成新名的数据库。
2.mysqldum 导出要改名的数据库
3.删除原来的旧库(确定是否真的需要)
当然这种方法虽然安全,但是如果数据量大,会比较耗时。

#创建数据库
CREATE DATABASE IF NOT EXISTS `库名` default charset utf8mb4 COLLATE utf8mb4_unicode_ci;# 将db1库备份到db1.sql文件
mysqldump -u root -p db1 > /tmp/db1.sql;#Enter password: 
#[root@xxx ~]# # 导入备份文件到新库db2
mysql -u root -p db2 < /tmp/db1.sql;#Enter password: 
#[root@xxx ~]# # 删除旧库(如果真的需要)
DROP DATABASE db1;

第三种方法:

我这里就用一个脚本,很简单,相信大家都看的懂
newdatabase.sh

#!/bin/bash
# 假设将db1数据库名改为db2
# MyISAM直接更改数据库目录下的文件即可
# 下面脚本是创建新数据库,获取旧数据库所有表名,将其循环移动到新数据库mysql -uroot -p123456 -e 'create database if not exists db2'
list_table=$(mysql -uroot -p123456 -Nse "select table_name from information_schema.TABLES where TABLE_SCHEMA='db1'")for table in $list_table
domysql -uroot -p123456 -e "rename table db1.$table to db2.$table"
done

-p123456脚本中把明文密码暴露出来。。。

[root@xxx script]# mysql --version
mysql  Ver 8.0.35 for Linux on x86_64 (MySQL Community Server - GPL)[root@xxx script]# bash newdatabase.sh 
mysql: [Warning] Using a password on the command line interface can be insecure.
mysql: [Warning] Using a password on the command line interface can be insecure.
mysql: [Warning] Using a password on the command line interface can be insecure.
mysql: [Warning] Using a password on the command line interface can be insecure.
#mysql:[警告]在命令行界面使用密码可能是不安全的。 

执行成功了但不安全,我们做下调整:

生成密文 sginpwd.sh

#!/bin/bash
function b64Code()
{#参数1: 需要加密的串passauth=$1#参数2: 加密的次数,次数越多密码越长for i in `seq 1 $2`do#python2passauth=`echo $passauth |python -c "import base64;s=raw_input();print(base64.b64encode(s))"`#python3#passauth=`echo $passauth |python -c "import base64;s=input(); print(base64.b64encode(s.encode()).decode());"`echo "[+]第${i}次加密结果:$passauth"done
}#执行 b64Code 加密方法,使用明文密码加密10次
b64Code 123456 10
#密码是字符串加上单引号

执行sginpwd.sh

[root@xxx script]# bash sginpwd.sh
[+]第1次加密结果:MTIzNDU2
[+]第2次加密结果:TVRJek5EVTI=
[+]第3次加密结果:VFZSSmVrNUVWVEk9
[+]第4次加密结果:VkZaU1NtVnJOVVZXVkVrOQ==
[+]第5次加密结果:VmtaYVUxTnRWbkpPVlZaWFZrVnJPUT09
[+]第6次加密结果:Vm10YVlWVXhUblJXYmtwUFZsWmFXRlpyVm5KUFVUMDk=
[+]第7次加密结果:Vm0xMFlWbFdWWGhVYmxKWFltdHdVRlpzV21GWFJscHlWbTVLVUZWVU1Eaz0=
[+]第8次加密结果:Vm0weE1GbFdiRmRXV0doVllteEtXRmx0ZEhkVlJscHpWMjFHV0ZKc2NIbFdiVFZMVlVaV1ZVMUVhejA9
[+]第9次加密结果:Vm0wd2VFMUdiRmRpUm1SWFYwZG9WbGx0ZUV0WFJteDBaRWhrVmxKc2NIcFdNakZIVjBaS2MyTkliRmRpVkZaTVZsVmFWMVpWTVVWaGVqQTk=
[+]第10次加密结果:Vm0wd2QyVkZNVWRpUm1ScFVtMVNXRll3Wkc5V2JHeDBaVVYwV0ZKdGVEQmFSV2hyVm14S2MyTkljRmROYWtaSVZqQmFTMk15VGtsaVJtUnBWa1phVFZac1ZtRldNVnBXVFZWV2FHVnFRVGs9

newdatabase_beff.sh

#!/bin/bash
# 假设将db1数据库名改为db2
# MyISAM直接更改数据库目录下的文件即可
# 下面脚本是创建新数据库,获取旧数据库所有表名,将其循环移动到新数据库function deCode()
{#参数1: 加密串内容passDstr=$1#参数2: 密码解析次数for i in `seq 1 $2`dopassDstr=`echo $passDstr |python -c "import base64;s=input(); print(base64.b64decode(s.encode()).decode());"`done
}#b64Code方法得到的密文放在这里
mysqlPass="Vm0wd2QyVkZNVWRpUm1ScFVtMVNXRll3Wkc5V2JHeDBaVVYwV0ZKdGVEQmFSV2hyVm14S2MyTkljRmROYWtaSVZqQmFTMk15VGtsaVJtUnBWa1phVFZac1ZtRldNVnBXVFZWV2FHVnFRVGs9"
#使用加密10次的密文 解密
deCode $mysqlPass 10
mysql -uroot -p"${passDstr}" -e "show databases;"mysql -uroot -p"${passDstr}" -e 'create database if not exists db2'
list_table=$(mysql -uroot -p"${passDstr}" -Nse "select table_name from information_schema.TABLES where TABLE_SCHEMA='db1'")for table in $list_table
domysql -uroot -p"${passDstr}" -e "rename table db1.$table to db2.$table"
done
function deCode()
{#参数1: 加密串内容passDstr=$1#参数2: 密码解析次数for i in `seq 1 $2`do#python2passDstr=`echo $passDstr |python -c "import base64;s=raw_input();print(base64.b64decode(s))"`#python3#passDstr=`echo $passDstr |python -c "import base64;s=input(); print(base64.b64decode(s.encode()).decode());"`done
}#b64Code方法得到的密文放在这里
mysqlPass="Vm0wd2QyVkZNVWRpUm1ScFVtMVNXRll3Wkc5V2JHeDBaVVYwV0ZKdGVEQmFSV2hyVm14S2MyTkljRmROYWtaSVZqQmFTMk15VGtsaVJtUnBWa1phVFZac1ZtRldNVnBXVFZWV2FHVnFRVGs9"
#使用加密10次的密文 解密
deCode $mysqlPass 10
mysql -uroot -p"${passDstr}" -e "show databases;"mysql -uroot -p"${passDstr}" -e 'create database if not exists db2'
list_table=$(mysql -uroot -p"${passDstr}" -Nse "select table_name from information_schema.TABLES where TABLE_SCHEMA='db1'")for table in $list_table
domysql -uroot -p"${passDstr}" -e "rename table db1.$table to db2.$table"
done
[root@xxx script]# bash newdatabase_beff.sh
mysql: [Warning] Using a password on the command line interface can be insecure.
+--------------------+
| Database           |
+--------------------+
| db1                |
| db2                |
+--------------------+
mysql: [Warning] Using a password on the command line interface can be insecure.
mysql: [Warning] Using a password on the command line interface can be insecure.
mysql: [Warning] Using a password on the command line interface can be insecure.
mysql: [Warning] Using a password on the command line interface can be insecure.#登录mysql,可以看到db1数据表迁移到db2了
mysql> use db1;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| active_log    |
| new           |
+---------------+
2 rows in set (0.00 sec)mysql> show tables;
Empty set (0.00 sec)mysql> use db2;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
mysql> show tables;
+---------------+
| Tables_in_db2 |
+---------------+
| active_log    |
| new           |
+---------------+
2 rows in set (0.00 sec)

这里用到了rename table,改表名的命令,但是如果新表名后面加数据库名,就会将老数据库的表移动到新的数据库,所以,这种方法即安全,又快速。

参考链接:
https://ost.51cto.com/posts/16797
https://blog.csdn.net/China_AT001/article/details/116916740

番外:所有表是 MyISAM 修改数据库名
1.先停止数据库服务

systemctl stop mysqld
#service mysql stop

2.到数据库目录 mv
数据库目录默认在/var/lib/mysql/,可以通过 find / -name mysql 查找

mv /var/lib/mysql/old_database /var/lib/mysql/new_database

3.启动数据库服务

systemctl start mysqld
#service mysql start

4.登录mysql,如果显示new_database数据库,说明修改成功数据库名了

show databases;

最终结果目录改了,数据库没显示,操作失败不知道啥原因,以后再看吧

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/181445.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[webpack] webpack 插件大全

clean-webpack-plugin 一个webpack插件&#xff0c;用来删除/清理你的构建文件夹 html-webpack-plugin 该插件将为你生成一个 HTML5 文件&#xff0c; 在 body 中使用 script 标签引入你所有 webpack 生成的 bundle js 文件 zip-webpack-plugin 该插件用来压缩所有文件成一…

Python爬虫遇到重定向URL问题时如何解决?

什么是重定向 重定向是指当用户请求一个URL时&#xff0c;服务器返回一个中断请求的URL的响应。这种情况通常发生在网站对URL进行了修改或者重定向到其他页面的情况下。其中&#xff0c;如果处理不当开发&#xff0c;可能会导致爬虫无法获取所需的数据&#xff0c;从而影响爬虫…

具有“真实触感”的动捕数据手套mhand pro,提供更精确的动作捕捉

随着人工智能的普及和万物互联&#xff0c;vr虚拟技术备受关注&#xff0c;为了更加真实的虚拟现实交互体验&#xff0c;动捕数据手套的使用逐渐普及&#xff0c;vr手套可以实时采集各手指关节运动数据&#xff0c;使用动捕数据手套可以在虚拟现实的场景中实现对真实手部运动的…

H3C堆叠和聚合配置

因ensp做不了堆叠&#xff0c;所以用了华三的模拟器HCL&#xff0c;下载地址&#xff1a;H3C网络设备模拟器官方免费下载-新华三集团-H3C 拓朴如下&#xff1a; 1、堆叠配置步骤如下&#xff1a; 1、S1和S2配置堆叠过程&#xff1a; [S1] irf domain 1 irf member 1 priority …

如何通过CRM实现客户关系管理?

——“小米加步枪是打不赢现代化战争的。” ——”CRM系统已成为企业掘金未来的必备。“ 数字化转型已经成为了企业发展的重要方向&#xff0c;然而数字化转型不仅仅是把线下搬到线上&#xff0c;更重要的是&#xff0c;真正的数字化转型应该以客户的连接和客户的数字化作为突破…

[backup@waifu.club].mkp勒索病毒数据怎么处理|数据解密恢复

导言&#xff1a; 随着网络威胁不断演变&#xff0c;[datastorecyberfear.com].mkp、[backupwaifu.club].mkp、[hendersoncock.li].mkp、[myersairmail.cc].mkp勒索病毒带来的挑战也在不断升级。本文将突出与以往不同的一些点&#xff0c;旨在提供更为前瞻和全面的[datastorec…

『heqingchun-Ubuntu系统+x86架构+编译安装OpenCV+带有nvidia硬件加速』

Ubuntu系统x86架构编译安装OpenCV带有nvidia硬件加速 一、准备文件 1.OpenCV源码下载 (1)opencv-4.5.5.zip 官网下载 网址&#xff1a; https://github.com/opencv/opencv/tree/4.5.5操作&#xff1a; 点击"Code"下的"Download ZIP" 下载得到opencv-4…

数据治理与数据入表、数据交易有什么关系?

数据作为关键生产要素&#xff0c;其乘数效应的发挥离不开数据要素保有量的丰富程度、数据要素市场的发展成熟度以及数据要素应用路径的清晰度。财政部2023年8月21日发布了《企业数据资源相关会计处理暂行规定》&#xff0c;标志着企业数据资源入表迈出了0到1的关键一步。 与此…

义无反顾马督工,Bert-vits2V210复刻马督工实践(Python3.10)

Bert-vits2更新了版本V210&#xff0c;修正了日/英的bert对齐问题&#xff0c;效果进一步优化&#xff1b;对底模使用的数据进行优化和加量&#xff0c;减少finetune失败以及电音的可能性&#xff1b;日语bert更换了模型&#xff0c;完善了多语言推理。 更多情报请参考Bert-vi…

【Openstack Train安装】五、Memcached/Etcd安装

本文介绍Memcached/Etcd安装步骤&#xff0c;Memcached/Etcd仅需在控制节点安装。 在按照本教程安装之前&#xff0c;请确保完成以下配置&#xff1a; 【Openstack Train安装】一、虚拟机创建 【Openstack Train安装】二、NTP安装 【Openstack Train安装】三、openstack安装…

PC端ssh连接到Android手机的Termux部署http服务器

1. 下载并安装Termux至Android手机 Releases termux/termux-app (github.com) https://github.com/termux/termux-app/releases 2. 手机端启动Termux&#xff0c;安装openssh #更新仓库 pkg up pkg install openssh #安装好后&#xff0c;启动sshd sshd问题1&#xff1a;如…

光学3D表面轮廓仪超0.1nm纵向分辨能力,让显微形貌分毫毕现

在工业应用中&#xff0c;光学3D表面轮廓仪超0.1nm的纵向分辨能力能够高精度测量物体的表面形貌&#xff0c;可用于质量控制、表面工程和纳米制造等领域。 与其它表面形貌测量方法相比&#xff0c;光学3D表面轮廓仪达到纳米级别的相移干涉法(PSI)和垂直扫描干涉法(VSI)&#x…

Handler系列-消息屏障

1.调用postSyncBarrier插入target为null的Message 这种消息为屏障消息&#xff0c;返回token&#xff0c;通过token可以移除这个屏障消息 public final class MessageQueue {public int postSyncBarrier() {return postSyncBarrier(SystemClock.uptimeMillis());}private int…

Influx集群解决方案(Influx Proxy篇)

InFluxDB 集群搭建 本次搭建使用influx proxy 介绍 github地址:https://github.com/chengshiwen/influx-proxy/ Influx Proxy 是一个基于高可用、一致性哈希的 InfluxDB 集群代理服务&#xff0c;实现了 InfluxDB 高可用集群的部署方案&#xff0c; 具有动态扩/缩容、故障恢复…

Salesforce服务云和营销云重大创新!通过大数据和AI赋能为客户提供非凡体验

4月6日&#xff0c;Salesforce宣布推出新的Service Cloud和Marketing Cloud功能&#xff0c;通过AI驱动的数字化语音、移动离线访问相关信息、Intelligence和CDP创新&#xff0c;使客户体验更加人性化。借助Salesforce与人工智能相结合的强大创新&#xff0c;企业可以提供个性化…

初探HarmonyOS路由跳转

最近的鸿蒙新闻也是很大声势&#xff0c;鸿蒙的纯血版一出&#xff0c;各大互联网大厂都坐不住了&#xff0c;纷纷加入其中。这意味鸿蒙将来会取代大部分Android用户&#xff0c;这也是程序员的一篇大好前程。如今的Android开发行业已经夕阳西下了。 网上有关HarmonyOS的资料几…

分析:为什么有些pdf打开之后无法编辑?

pdf文件大家应该都经常接触&#xff0c;但是不知道大家会遇到这种情况&#xff1a;有些PDF文件打开之后无法编辑&#xff1f;是什么原因呢&#xff1f;今天我们来分析一下都是那些原因导致的。 首先我们可以考虑一下&#xff0c;PDF文件中的内容是否是图片&#xff0c;如果确认…

安全狗入选《2024中国企业服务云图(精选版)》多个细分领域

近日&#xff0c;由吴中区人民政府、苏州市工信局指导&#xff0c;崔牛会主办&#xff0c;苏州太湖国家旅游度假区管委会协办的2023中国SaaS大会在苏州顺利举办。 作为国内云原生安全领导厂商&#xff0c;安全狗突出的多项安全能力也在大会上受到认可。 厦门服云信息科技有限…

前后端分离开发出现的跨域问题

先说说什么是跨域。 请求的URL地址中的协议、域名、端口号中的任意一个与当前URL不同就是跨域。 比如&#xff1a; 当前页面的URL请求的URL是否跨域原因htttp://localhost:8080htttps://localhost:8080是协议不同htttp://localhostll:8080htttp://localhost:8080是域名不同htt…

C++操纵数组

藤藤有一个长度为n的数组 a 现在藤藤希望改变这个数组&#xff0c;使得该数组的最小值尽可能的大。 现在藤藤可以施展m次魔法&#xff0c;每次魔法可以使得连续长度为 L 的一段每个元素 1。 藤藤想知道最终这个数组的最小值最大可以达到多少&#xff1f; 输入格式 第一行三…