目录
方法一:使用“rename database <旧数据库名> [to] <新数据库名>;”命令。
方法二:使用mysqldump命令先导出旧数据库数据为备份文件,再将备份文件导入到新数据库。
方法三:编写脚本去重命名所有数据表,确认无误后再删除原数据库。
方法五:直接修改/var/lib/mysql目录下对应要重命名的数据库目录。
解决问题:重命名在Centos7下MariaDB里创建的数据库
由于重命名数据库名没有单独的命令,所以就需要我们另辟蹊径,这里提供了5种方法,亲测有效。
在重命名前,首先应该考虑MariaDB数据库使用的是哪种存储引擎?这里主要考虑两种最常用的存储引擎InnoDB和MyISAM。
第一种:重命名使用InnoDB存储引擎的数据库
-
方法一:使用“rename database <旧数据库名> [to] <新数据库名>;”命令。但是,这个方法仅适用于5.1.7到5.1.23版本,后续版本又被取消,官方一般不推荐使用,因为有丢失数据的风险。
MariaDB [(none)]> rename database db_life to db_data;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'database db_life to db_data' at line 1
-
方法二:使用mysqldump命令先导出旧数据库数据为备份文件,再将备份文件导入到新数据库。如果数据量较大,其备份速度会有所降低,花费较长时间。
1.将db_work数据库导出成备份文件
[root@localhost ~]# mysqldump -uroot -p971224 db_work>db_work.sql
2.创建db_students新数据库,并查看所有数据库
[root@localhost ~]# mysql -h localhost -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 6
Server version: 5.5.65-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> create database if not exists db_students; #创建db_students新数据库
Query OK, 1 row affected, 1 warning (0.00 sec)
MariaDB [(none)]> show databases; #查看所有数据库,新数据库创建成功
+--------------------+
| Database |
+--------------------+
| information_schema |
| db_life |
| db_students |
| db_work |
| mysql |
| performance_schema |
+--------------------+
6 rows in set (0.00 sec)
3.将db_work数据库备份文件导入到新数据库中,并重建表及数据
[root@localhost ~]# mysql -u root -p db_students</root/db_work.sql
Enter password: #输入验证密码
4.启用新数据库db_students,并检测数据是否丢失
MariaDB [(none)]> use db_students; #启用新数据库db_students
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [db_students]> desc tab_students; #查看表结构,数据正常未丢失
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| stu_id | int(5) | YES | | NULL | |
| stu_name | varchar(10) | YES | | NULL | |
| stu_gender | char(2) | YES | | NULL | |
| stu_age | int(3) | YES | | NULL | |
| stu_tel | int(15) | YES | | NULL | |
| stu_qq | int(15) | YES | | NULL | |
| stu_addr | varchar(20) | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+
7 rows in set (0.01 sec)
5.删除原数据库db_work,再次查看所有数据库
MariaDB [db_students]> drop database db_work;
Query OK, 1 row affected (0.04 sec)
MariaDB [db_students]> show databases; #再次查看所有数据库,旧数据库删除成功
+--------------------+
| Database |
+--------------------+
| information_schema |
| db_life |
| db_students |
| mysql |
| performance_schema |
+--------------------+
5 rows in set (0.00 sec)