首页 > 数据库 >如何修改MySQL数据库名称

如何修改MySQL数据库名称

时间:2023-09-17 15:24:02浏览次数:58  
标签:数据库 MySQL db 修改 mysql table

需求

比如数据库名称old_db
想改名为new_db

MySQL修改数据库名称比较麻烦,不支持直接修改,需要通过其它方式间接达到修改数据库名称的目的。
在 MySQL 5.1.23 之前的旧版本中,我们可以使用 RENAME DATABASE 来重命名数据库,但此后版本,因为安全考虑,删掉了这一命令。

先导出数据,再导入数据

当数据库体积比较小时,最快的方法是使用 mysqldump 命令来创建整个数据库的转存副本,然后新建数据库,再把副本导入到新数据库中。

先创建新库

create database new_db;

使用mysqldump导出数据

mysqldump -uroot -p123456 --set-gtid-purged=OFF old_db > /tmp/old_db.sql

仅是做普通的本机备份恢复时,可以添加
--set-gtid-purged=OFF
作用是在备份时候不出现GTID信息

导入数据到新库

mysql -uroot -p123456 new_db < /tmp/old_db.sql

通过修改表名称,间接实现修改数据库名称

使用此方法实际上将所有表从一个数据库移动到另一个数据库,这实际上重命名了该数据库(MySQL没有单个语句的操作),移动后原始数据库继续存在,但是里面没有表。

先创建新库

create database new_db;

使用RENAME TABLE 命令修改表名,将表移动到新的库里

rename table old_db.tb to new_db.tb;

完成后删除旧库

drop database old_db;

使用shell脚本来批量修改表名

#!/bin/bash
# 例如将 payment-mobile 数据库名改为 payment_mobile

mysql_path="/usr/local/mysql/bin/mysql"
username="root"
password="123456"
source_db="\`test-db\`"
source_db_where="test-db"
target_db="\`test_db\`"

${mysql_path} -u${username} -p${password} -e "create database if not exists ${target_db}"

list_table=$(${mysql_path} -u${username} -p${password} -Nse "select table_name from information_schema.TABLES where TABLE_SCHEMA='${source_db_where}'")

for table in ${list_table}
do
    rename_command="rename table ${source_db}.\`${table}\` to ${target_db}.\`${table}\`"
    ${mysql_path} -u${username} -p${password} -e "${rename_command}"
done

注意,数据库名和表名最好使用``包裹,避免包含特殊字符如-,where语句中的值不能包裹。

  • -e, --execute=name # 执行mysql的sql语句
  • -N, --skip-column-names # 不显示列信息
  • -s, --silent # 一行一行输出,中间有tab分隔

总结

导出数据再导入的方式在数据量很大的情况下会很慢,但很安全。
修改表名的方式很安全和快速,但修改之后原有的数据库立刻就不能使用了,不能平滑的过渡。

参考

如何修改MySQL数据库名称
三种方式修改 MySQL 数据库名
mysqldump关于--set-gtid-purged=OFF的使用

标签:数据库,MySQL,db,修改,mysql,table
From: https://www.cnblogs.com/strongmore/p/17326161.html

相关文章

  • 数据库初始化
    数据库初始化 1-配置用户1.1创建组groupaddyw1.2创建用户useradd-d/home/yw-gywyw1.3修改用户密码passwdyw1.4查看是否存在cat/etc/passwd|grepyw 2-数据库初始化2.1登录Oracle服务器,切换到oracle用户su-oracle2.2创建临时目录mkdir/home/oracle/tem......
  • MySQL的安装
    首先下载mysql    安装到D盘,然后全部解压。然后在该文件夹里面添加data文件和my.ini文本如下  在my.ini文本里面添加该代码,如下(注意当下路径为你的安装路径,且不能出现中文) 上面的步骤完成后,便右击此电脑,进入属性,进入高级系统设置,进入环境变量。然后创建MySQL_......
  • 【小沐学Unity3d】3ds Max 骨骼动画制作(蒙皮修改器skin)
    1、简介“蒙皮”修改器是一种骨骼变形工具,主要设计用于通过另一个对象对一个对象进行变形来创建角色动画。可使用骨骼、样条线和其他对象变形网格、面片和NURBS对象。如果将“蒙皮”修改器应用到网格,然后使用修改器指定骨骼,则每个骨骼都将收到一个胶囊形状的“封套”。这些封......
  • 分布式数据库(背)
          ......
  • 数据库的备份与恢复
          ......
  • FastAPI学习-19.response 参数-修改状态码
    前言假设你想默认返回一个HTTP状态码为“OK”200。但如果数据不存在,你想创建它,并返回一个HTTP状态码为“CREATED”201。但你仍然希望能够使用response_model过滤和转换你返回的数据。对于这些情况,你可以使用一个response`参数。使用 response 参数status_code设置默认状......
  • MySQL 总结
    MySQL笔记MySQL视频课程......
  • mysql innodb_lock_wait_timeout修改
    一、概述设置mysql事务锁超时时间innodb_lock_wait_timeoutMysql数据库采用InnoDB模式,默认参数:innodb_lock_wait_timeout设置锁等待的时间是50s,一旦数据库锁超过这个时间就会报错。二、修改1、查询SHOWVARIABLESLIKE'innodb_lock_wait_timeout';2、session级别修改SETi......
  • 三、(2)mysql介绍
    MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,目前属于Oracle旗下产品。MySQL是最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,关系数据库管理系统)应用软件之一。关系数据库将数据保存在不同的表中......
  • 三、(4)数据库的基本操作
    数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引、锁定等功能,使用不同的存储引擎,还可以获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySQL的核心就是存......