马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?开始注册
x
如果是Innodb完全不行,会提示相关表不存在。
/ {/ ?- }. X/ q3 \6 c第一种方法:+ @* b- L! i0 r7 N3 M. |
RENAME database olddbname TO newdbname, I" J F/ ?, [" O. j. I
官方不推荐,会有丢失数据的危险! K/ @( e6 f0 o9 X( B
这个语法在mysql 5.1.7中被添加进来,到了5.1.23又去掉了。 . _$ `4 N6 n, `1 S: Q4 b* `
第二种方法:
7 Y7 K, t u! p, i. ^) @如果所有表都是MyISAM类型的话,可以改文件夹的名字1 W7 a) x3 Z E3 k/ Z0 M# f: C! J
关闭mysqld / c0 }( I4 m; ^! `
service mysqld stop3 S- ~: @3 }" ^0 L* `5 M
Shutting down MySQL SUCCESS! ) W! B ?1 F2 E) u
把data目录中的db_name目录重命名为new_db_name + d2 L, T0 X9 Y$ Q3 \, ^7 V! n4 h
# cd /var/lib/mysql
3 ?( F: X/ z1 |& G# l e修改成新的数据库名称: : K9 i+ J6 X# Z5 P# c+ S
# mv sichuan/ Sichuan . _. ?% g# V7 H" C$ t" e8 g
/ D& G& f6 g& w) l/ K- t7 C
开启mysqld 2 f" z4 L: D" s7 C/ D9 s7 Q
service mysqld start }) {, }% l. h3 H. E
Starting MySQL SUCCESS! 4 }7 X5 r& d+ {6 R" r: R
8 U: B$ e7 X8 B" g8 f
3 g$ M) O }3 o" C/ lmysql> show databases;
4 V* G+ F# _7 V4 [+ i% v2 \% Z+--------------------+, e+ r( r7 q. D! l, o' t3 l
| Database |, s& A$ b% ~% v) v+ J0 @
+--------------------+
* ^$ ~) i. J: ?5 k| information_schema | , w1 x& [% E! q; I. _9 H3 w
| Sichuan |
& z& v0 u2 }' Q% W: w| mysql | , G+ ~, @; \& a8 z
| test | # Y; {& g+ }6 S# T
| yang | 4 @) u1 m' t4 @0 M l: M
+--------------------+
# o9 P% u- b/ z' Z+ S5 rows in set (0.00 sec)
) o1 u/ @ U) g1 Q% s' P第三种方法:- {% t1 P. ^' X- Z5 O
mysqldump导出数据再导入/ W. V ` \+ h( q
* `6 P; B8 [; g% B1.创建需要改成新名的数据库。
" {" `2 ?; Y7 I9 b, k3 ^/ Emysql> create database Sichuan;' J' @8 f( S/ W3 b8 l" d
Query OK, 1 row affected (0.00 sec)' j2 `2 n* t9 C# m, A6 E8 k
8 R' V- V7 p) I" @! L, N! q& M
2.mysqldum 导出要改名的数据库
. U3 I' O5 c% \' cmysqldump -uroot -p123456 sichuan >/root/sichuan.sql
2 N0 U: B1 r) W导入数据到新建的数据库中:
. ?* H# L3 W4 ~1 D, X% v# mysql -uroot -p123456 Sichuan <sichuan.sql 或者:mysql> source /root/sichuan.sql
6 @& O% n* w' C$ c0 k6 ]% |; }3.删除原来的旧库(确定是否真的需要)
3 |( r/ {9 \# d0 P2 l% D& o
% N9 h* w7 L8 Z+ {. F" n {2 P当然这种方法虽然安全,但是如果数据量大,会比较耗时,同时还需要考虑到磁盘空间等硬件成本。3 N# Y; ^8 W9 H1 F
/ \' B# z1 M- X' Y0 s; K2 G v
mysqldump -uxxxx -pxxxx -h xxxx db_name > db_name_dump.SQL
1 S+ S+ u7 w7 P7 _4 {, qmysql -uxxxx -pxxxx -h xxxx -e “CREATE DATABASE new_db_name” : R( Q8 {$ Z7 [2 H% _$ V
mysql -uxxxx -pxxxx -h xxxx new_db_name < db_name_dump.SQL 4 J. L+ W% w' {9 `) Z
mysql -uxxxx -pxxxx -h xxxx -e “DROP DATABASE db_name” - }9 p% _ [! F
0 Q( y9 ~7 f/ ]$ D, g: _
# I9 Y2 O/ J( }! b' C, S
第四种方法:" J5 q8 u0 c$ \- w+ J
直接跑一个shell脚本,( M: j+ J8 c- k% ^' N5 L- i
#!/bin/bash
8 S b% l( V7 R# 假设将db1数据库名改为db21 a; p% F1 B/ d" g: _; N
# MyISAM直接更改数据库目录下的文件即可
/ {( P0 w0 w% f2 L! m8 E( Zmysql -uroot -p123456 -e 'create database if not exists db2'
4 a: G' S6 o, @2 }; Plist_table=$(mysql -uroot -p123456 -Nse "select table_name from information_schema.TABLES where TABLE_SCHEMA='db1'"). ^" h* S3 ?3 U6 E
for table in $list_table
2 R2 z4 v. E: L) edo
0 I6 _6 c2 z) o+ { mysql -uroot -p123456 -e "rename table db1.$table to db2.$table"6 x- X" \4 g2 Q" Q, R
done; e2 o3 C% ]% W. l
) W0 j% `& ?& D: K, ?
9 d; h3 I8 Z2 w#!/bin/bash mysqlconn=”mysql -u xxxx -pxxxx -S /var/lib/mysql/mysql.sock -h localhost” olddb=”db_name” newdb=”new_db_name” #$mysqlconn -e “CREATE DATABASE $newdb” params=$($mysqlconn -N -e “SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='$olddb'”) for name in $params; do $mysqlconn -e “RENAME TABLE $olddb.$name to $newdb.$name”; done; #$mysqlconn -e “DROP DATABASE $olddb”' X! }- h+ x) g( X
5 l+ n7 v9 |. o( H1 b3 [1 @1 \7 e+ t0 o& y/ T+ q5 S7 \
注:以上这些操作都是危险的,所以请在执行操作前,备份你的数据库!! : Y k6 ?# I+ t, f0 T$ I: G
————————————————! G& _* A7 b% p
e$ x+ M* e" U0 y& V( i# Y% z
|