当前位置: 首页 > news >正文

如何修改mysql连接哪个数据库_如何修改MySQL数据库名称

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

- MySQL修改数据库名称比较麻烦,不支持直接修改,需要通过其它方式间接达到修改数据库名称的目的。

- 在 MySQL 5.1.23 之前的旧版本中,我们可以使用 `RENAME DATABASE` 来重命名数据库,但此后版本,因为安全考虑,删掉了这一条命令。

### 方法一:先导出数据,再导入数据

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

#### 1.1 先创建新库:

```

create database new_db;

```

#### 1.2 使用`mysqldump`导出数据:

```

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

仅是做普通的本机备份恢复时,可以添加

--set-gtid-purged=OFF

作用是在备份时候不出现GTID信息

```

#### 1.3 导入数据到新库:

```

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

```

### 方法二:通过修改表名称,间接实现修改数据库名称

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

==`RENAME TABLE`==:[https://dev.mysql.com/doc/refman/5.7/en/rename-table.html](https://dev.mysql.com/doc/refman/5.7/en/rename-table.html)

#### 2.1 先创建新库:

```

create database new_db;

```

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

```

rename table old_db.tb to new_db.tb;

```

#### 2.3 完成后删除旧库:

```

drop database old_db;

```

#### 2.4 如何使用`shell`脚本来批量修改表名:

- 当库下表比较多的时候,用上面方法纯手动也不现实,好在`linux`下可以用`shell`脚本来批处理。

- 附上一个`shell`脚本批量修改表名称。

```

#!/bin/bash

mysql -uroot -p123456 -e 'create database if not exists new_db;'

list_table=$(mysql -uroot -p123456 -Nse "select table_name from information_schema.TABLES where TABLE_SCHEMA='old_db'")

for table in $list_table

do

mysql -uroot -p123456 -e "rename table old_db.$table to new_db.$table"

done

```

##### `mysql`登陆命令行参数

- -e, --execute=name *# 执行mysql的sql语句*

- -N, --skip-column-names *# 不显示列信息*

- -s, --silent *# 一行一行输出,中间有tab分隔*

#### 因为有悔,所以披星戴月;因为有梦,所以奋不顾身! 个人博客首发:`easydb.net` 微信公众号:`easydb` 关注我,不走丢!

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69982604/viewspace-2724260/,如需转载,请注明出处,否则将追究法律责任。

相关文章:

  • mysql hibernate save_java Hibernate save()与persist()区别
  • mysql database 函数_MySQL中DATABASE()和CURRENT_USER()函数的示例详解
  • mysql 21_MySQL中,21个写SQL的好习惯(修正版)
  • mysql limit 后子查询_Mysql子查询用limit
  • mysql5.5.62怎么使用_centos7 安装 mysql5.5.62
  • php mysql 排名算法_PHP实现四种基础排序算法的运行时间比较(推荐)
  • python 输出字典字符_从服务器到字典的python输出字符串
  • 用el表达式取出mysql中的值_用c标签,el表达式动态取数据库中的值并显示在页面上,动态下拉列表的实现,html:select...
  • 抓狐狸python_Python运算符
  • mysql数据库set names_MySQL数据库之mysql SET NAMES
  • python xls 合并为 cvs_使用python把csv汇总成excel
  • python 可迭代对象和迭代器区别_python生成器,可迭代对象,迭代器区别和联系...
  • java打印文件_java 循环打印文件夹文件
  • java sql系统_用Java实现数据库应用系统
  • jmeter的java请求参数设置_jmeter之 java请求
  • Android框架之Volley
  • Android优雅地处理按钮重复点击
  • Druid 在有赞的实践
  • gf框架之分页模块(五) - 自定义分页
  • HomeBrew常规使用教程
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • MySQL QA
  • MySQL-事务管理(基础)
  • Next.js之基础概念(二)
  • node.js
  • SQL 难点解决:记录的引用
  • Vue.js 移动端适配之 vw 解决方案
  • 安装python包到指定虚拟环境
  • 程序员最讨厌的9句话,你可有补充?
  • 浮动相关
  • 聊聊directory traversal attack
  • 面试遇到的一些题
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 通过git安装npm私有模块
  • 微信小程序填坑清单
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 在Docker Swarm上部署Apache Storm:第1部分
  • Java总结 - String - 这篇请使劲喷我
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • # C++之functional库用法整理
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (windows2012共享文件夹和防火墙设置
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (三)c52学习之旅-点亮LED灯
  • (十八)SpringBoot之发送QQ邮件
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • **PHP二维数组遍历时同时赋值
  • .naturalWidth 和naturalHeight属性,
  • .net core 6 redis操作类
  • .Net Redis的秒杀Dome和异步执行