今天接到宇航同学的问题,他们老大要求更改数据库名称,居然是为了数据库安全???我靠!真强的想法啊。因为他们的数据库是采用的INNODB存储引擎,不能直接修改数据库的名称,所以现转换成MyISAM存储引擎在修改表名在转换成INNODB存储引擎就好了,虽然过程比较麻烦,不如修改表名那样容易,但是能修改就偷笑吧。我个人认为数据库的名称属于数据库设计范畴,应该遵守设计规范,不能随便的修改名称。第一次听说为了安全修改数据库名,实在是不可取。
修改名称详细步骤(因为不仅仅是上面那几步)
mysql> use dinghao;
mysql> select * from t1;
+——+———–+
| id
+——+———–+
|
+——+———–+
1 row in set (0.00 sec)
mysql> show create table t1;
+——-+————————————————————————————————————————-+
| Table | Create Table
+——-+————————————————————————————————————————-+
| t1
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+——-+————————————————————————————————————————-+
1 row in set (0.00 sec)
mysql> flush tables;
Query OK, 0 rows affected (0.00 sec)
mysql> flush logs;
Query OK, 0 rows affected (0.00 sec)
mysql> show processlist; #这一步主要查看有没有其他进程连接,要保证没有其他程序操作数据库。
+—-+——+———–+———+———+——-+——-+——————+
| Id | User | Host
+—-+——+———–+———+———+——-+——-+——————+
| 17 | root | localhost | dinghao | Query
+—-+——+———–+———+———+——-+——-+——————+
1 rows in set (0.00 sec)
mysql> alter table t1 engine=MyISAM;
Query OK, 1 row affected (0.01 sec)
Records: 1
mysql> exit
[root@mysqludf var]# mv dinghao aaa;
mysql> use aaa;
Database changed
mysql> alter table t1 engine=INNODB;
Query OK, 1 row affected (0.00 sec)
Records: 1
mysql> select * from t1;
+——+———–+
| id
+——+———–+
|
+——+———–+
1 row in set (0.00 sec)
注意,在改名之前必须现转换存储引擎,否则会报错,你想换的这个名称就换不成了,只能换另外一个名称了。错误的方法就不演示了,光记住好的就行了。
(责任编辑:ken)