mysql如何更改数据库名(一键实现mysql改数据库名)
由于某种原因,有时我们有可能需要数据库的名称,但是不像官方有rename可以去更改表名,并没有一个命令可以去更新数据库的名字。
思路:借助rename这个命令
基本操作:rename olddb.tables to newdb.tables
但是这个命令碰到视图会出错,也不能把旧库中的函数,存储过程,事件移过来,对于这一些,我们可以从旧库中导出这些定义,再导入到新库中。我们不可能一个个去改,得借助脚本。
脚本实现的逻辑思路:
1.查看要改的新旧库是否存在,来判断是否需要进一步处理
2.先用rename把所有的表移到新命名的库中
3.导出旧库中的视图,函数,存储过程,事件。
4.导入新库中
5.删除旧库
这个方法把全部数据导出再导入来得更快。
完整的脚本如下(操作前请作好备份):
[chenzejin@localhost sh_script]$ cat mysql_rename_database.sh
#!/bin/bash #script_name: mysql_rename_database.sh
MYSQL_USER='root'
MYSQL_PASSWD='123'
MYSQL_BIN='/usr/local/mysql/bin'
HOSTS=127.0.0.1
PORT=
if [ $# -ne ];
then
echo "usage:./mysql_rename_database.sh oldDB newDB"
exit
fi
user_identify=" -h$HOSTS -P$PORT -u$MYSQL_USER -p$MYSQL_PASSWD " oldDB_exist=`$MYSQL_BIN/mysql $user_identify -ss -e " select schema_name from information_schema.schemata where schema_name=""'"$"'" `
newDB_exist=`$MYSQL_BIN/mysql $user_identify -ss -e " select schema_name from information_schema.schemata where schema_name=""'"$"'" ` if [ -z "$oldDB_exist" -o -n "$newDB_exist" ];
then
echo "Database $1 does not exist or Database $2 exist ,please confirm! "
exit
fi #dump all views
DUMPTIME=`date +%Y%m%d_%H%M%S`
list_views=$($MYSQL_BIN/mysql $user_identify -Nse "select table_name from information_schema.TABLES where table_type='view' and TABLE_SCHEMA=""'"$"'") for view in $list_views
do
$MYSQL_BIN/mysqldump $user_identify --no-create-db --no-data $ $view >> all_views_DB_$1_$DUMPTIME.sql
done #dump function ,triger ,events
$MYSQL_BIN/mysqldump -F -R -E $user_identify --no-create-db --no-create-info --no-data $ >> all_views_DB_$1_$DUMPTIME.sql #create new databases;
$MYSQL_BIN/mysql $user_identify -e "create database $2"
list_table=$($MYSQL_BIN/mysql $user_identify -Nse "select table_name from information_schema.TABLES where table_type='base table' and TABLE_SCHEMA=""'"$"'") for table in $list_table
do
$MYSQL_BIN/mysql $user_identify -e "rename table $1.$table to $2.$table"
done #import views,function ,triger ,events
$MYSQL_BIN/mysql $user_identify $ < all_views_DB_$1_$DUMPTIME.sql #remove old database
$MYSQL_BIN/mysql $user_identify -e "drop database $1"
mysql如何更改数据库名(一键实现mysql改数据库名)的更多相关文章
- eclipse 改包名
转载自: http://www.2cto.com/kf/201304/206747.html 1.在项目上右键,选择android tools->rename application packa ...
- [功能集锦] 003 - 一键生成mysql数据字典/数据库速查表
写在前面: 因为工作时候经常遇到半路接手项目的情况,由于年代久远,数据库字典这块经常缺失.故写此篇,以便复用,也希望对大家有点帮助. 随笔内容不高级,如有不妥,不吝指正. ps:有另一篇详细随笔可以参 ...
- Rehat一键安装mysql脚本和备份数据库脚本
Rehat一键安装mysql脚本 ##说明:适用,Rehat 5 6 7 1.运行状态,运行成功输出mysql临时密码 2.代码如下 #!/bin/bash #获取系统信息 sudo cat /etc ...
- 数据库SQL语法到MySQL实操
一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname 3.说明:备份sql server--- 创建 ...
- 【转】如何将MySQL数据目录更改为CentOS 7上的新位置
本文转载自:http://www.leftso.com/blog/362.html 介绍 数据库随着时间的推移而增长,有时超过了文件系统的空间.当它们与操作系统的其他部分位于同一分区上时,也可能遇到I ...
- mysql改数据库名称
第一种方法: 1.创建需要改成新名的数据库.2.mysqldum 导出要改名的数据库3.删除原来的旧库(确定是否真的需要)当然这种方法虽然安全,但是如果数据量大,会比较耗时,哎,当时连这种方法都没有想 ...
- 一、初识MySQL数据库 二、搭建MySQL数据库(重点) 三、使用MySQL数据库 四、认识MySQL数据库的数据类型 五、操作MySQL数据库的数据(重点)
一.初识MySQL数据库 ###<1>数据库概述 1. 数据库 长期存储在计算机内的,由组织的可共享的数据集合 存储数据的仓库 文件 ...
- 【数据库】1.0 MySQL入门学习(一)——常识性知识
1.0 什么是MySQL(官方发音 My Ess Que Ell)? 是一个快速.多线程.多用户和强壮的SQL数据库服务器,SQL是世界上最流行的标准化数据库语言. 名字来源:共同创办人Monty W ...
- 数据库操作----找了MySQL和SQL Sever两个的基础语句
这是MySQL的基本操作: 1 登入数据库:mysql -uroot -p+密码 (SQL Sever登入: osql -U 用户名 -P 密码) 显示已存在的数据库:show databases; ...
随机推荐
- CCNA实验4:HDLC和PPP
一.HDLC封装 router9和11上分别配置s0/0如下 conf t int s0/0 encapsulation hdlc do show int s0/0 ip address x.x.x. ...
- Windows 10开启默认网络驱动器访问
在Windows 10的系统策略中,驱动器盘符的网络访问是默认关闭的,用管理员权限打开注册表,找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curre ...
- PHP ERROR : Call to undefined function curl_init()
在使用PHP 的Curl方法时出现了以下错误 可能的解决办法: 在php.ini 中确保 启用了php_curl.dll组件 确保PHP版本 (PHP 4 >= 4.0.2, PHP 5, PH ...
- Linux内核同步方法
1.原子操作,是其它同步方法的基础. 2.自旋锁,线程试图获取一个已经被别人持有的自旋锁,当前线程处于忙等待,占用cpu资源. 3.读写自旋锁,根据通用性和针对性的特点,普通自旋锁在特定场景下的表现会 ...
- CSS计数器的趣味时光
CSS计数器是“啊太好了,竟不知道CSS可以做这啊”这类非常有趣的众多特性之一.简言之,用CSS使你持续某增加某个量,而无需JavaScript. 简单计数器 我们从这个简单的分页示例开始: 你见到的 ...
- TextView使用SpannableString设置复合文本(转)
TextView通常用来显示普通文本,但是有时候需要对其中某些文本进行样式.事件方面的设置.Android系统通过SpannableString类来对指定文本进行相关处理,具体有以下功能: 1.Bac ...
- [转载] Redis
转载:http://snowolf.iteye.com/blog/1630697 大约一年多前,公司同事开始使用Redis,不清楚是配置,还是版本的问题,当时的Redis经常在使用一段时间后,连接爆满 ...
- [转]Android 超高仿微信图片选择器 图片该这么加载
快速加载本地图片缩略图的方法: 原文地址:Android 超高仿微信图片选择器 图片该这么加载 其示例代码下载: 仿微信图片选择器 ImageLoader
- ubuntu(Mint-17)修改dns
国内默认dns常被劫持,所以需要修改: $ sudo vi /etc/network/interfaces 在下面添加一行: dns-nameservers 8.8.8.8 8.8.4.4 然后,网上 ...
- 【WebMisCentral WMC】基于Extjs 4.2x的企业级用户授权认证中心系统(SSO+AM+SM),多租户SAAS应用
http://saas.chinacloudtech.com 题记 三年磨一剑,在企业信息化的道路上已经走了3年之久了,3年多时间里做了很多,突破了很多:有无奈和辛酸,也有收货与喜悦:自我价值也在不断 ...