我想修改mysql数据库的名字,可以怎么修改
被取消的命令MySQL之前提供了一个 rename database db_old to db_new的命令来直接对数据库改名,可能由于实现的功能不完备(这条命令可能是一个超大的事务,或者是由于之前的表很多还是 MyISAM等),后来的版本直接取消了这条命令。更改数据库名大致上有以下几种方案:
一、mysqldump导入导出要说最简单的方法,就是直接用 mysqldump工具,在旧库导出再往新库导入(最原始、最慢、最容易想到)的方法:旧库 yttdb_old导出(包含的对象:表、视图、触发器、事件、存储过程、存储函数)
二、改整库的表名利用 MySQL更改表名的方法来批量把旧库的所有表依次遍历,改名为新库的表。这种方法比第一种要快很多倍,但是没有第一步操作起来那么顺滑,不能一步到位。要把数据库 yttdb_old改名为 yttdb_new,如果数据库 yttdb_old里只有磁盘表,那很简单,直接改名即可。或者写个脚本来批量改,非常简单。但是一般旧库里不只有磁盘表,还包含其他各种对象。这时候可以先考虑把旧库的各种对象导出来,完了在逐一改完表名后导进去。
三、历史方案其实在 MySQL早期还有一种方法。假设 MySQL部署好了后,所有的 binlog都有备份,并且二进制日志格式还是 statement的话,那就可以简单搭建一台从机,让它慢慢追主机到新的库名,等确切要更改旧库的时候,再直接晋升从机为主机即可。这里只需要从机配置一个参数来把旧库指向为新库:replicate-rewrite-db=yttdb_old->yttdb_new不过这种局限性很大,不具备标准化,不推荐。
总结其实针对 MySQL本身改库名,大致就这么几种方法:
如果数据量小,推荐第一种;数据量大,则推荐第二种;数据量巨大,那就非 MySQL本身能解决的了。可通过部署第三方 ETL工具,通过解析 MySQL二进制日志或其他的方式来把旧库数据直接读取到新库达到改名的目的等等。MySQL如何更改数据库数据存储目录详解
前言
MySQL数据库默认的数据库文件位于/var/lib/mysql下,有时候由于存储规划等原因,需要更改MySQL数据库的数据存储目录。下文总结整理了实践过程的操作步骤。话不多说了,一起来看看吧
方法如下:
1:确认MySQL数据库存储目录
[root@DB-Server tmp]# mysqladmin-u root-p variables| grep datadir
Enter password:
| datadir|/var/lib/mysql/
2:关闭MySQL服务
在更改MySQL的数据目录前,必须关闭MySQL服务。
方式1:
[root@DB-Server~]# service mysql status
MySQL running(9411)[ OK ]
[root@DB-Server~]# service mysql stop
Shutting down MySQL..[ OK ]
[root@DB-Server~]#
方式2:
[root@DB-Server~]#/etc/rc.d/init.d/mysql status
MySQL running(8900)[ OK ]
[root@DB-Server~]#/etc/rc.d/init.d/mysql stop
Shutting down MySQL..[ OK ]
[root@DB-Server~]#
3:创建新的数据库存储目录
[root@DB-Server~]# cd/u01
[root@DB-Server u01]# mkdir mysqldata
4:移动MySQL数据目录到新位置
[root@DB-Server~]# mv/var/lib/mysql/u01/mysqldata/
5:修改配置文件my.cnf
并不是所有版本都包含有my.cnf这个配置文件,在MySQL 5.5版本,我就找不到my.cnf这个配置文件,而有些MySQL版本该文件位于/usr/my.cnf,如果/etc/目录下没有my.cnf配置文件,请到/usr/share/mysql/下找到*.cnf文件,拷贝其中一个到/etc/并改名为my.cnf中。命令如下:
[root@DB-Server mysql]# cp/usr/share/mysql/my-medium.cnf/etc/my.cnf
编辑/etc/my.cnf文件,修改参数socket
MySQL 5.5版本
# The following options will be passed to all MySQL clients
[client]
#password= your_password
port= 3306
socket=/u01/mysqldata/mysql/mysql.sock
# Here follows entries for some specific programs
# The MySQL server
[mysqld]
port= 3306
socket=/u01/mysqldata/mysql/mysql.sock
skip-external-locking
key_buffer_size= 16M
max_allowed_packet= 1M
table_open_cache= 64
sort_buffer_size= 512K
net_buffer_length= 8K
read_buffer_size= 256K
read_rnd_buffer_size= 512K
myisam_sort_buffer_size= 8M
6:修改启动脚本/etc/init.d/mysql
将参数datadir修改为datadir=/u01/mysqldata/mysql/
7:启动MySQL服务并验证MySQL数据库路径
[root@DB-Server~]# service mysql start
Starting MySQL..[ OK ]
[root@DB-Server~]# mysqladmin-u root-p variables| grep datadir
Enter password:
| datadir|/u01/mysqldata/mysql/
我的疑问:
1:在修改数据库的存储目录前,/var/lib/mysql/目录下根本没有mysql.sock文件,安装上面配置后,就会生成mysql.sock文件。
关于mysql.sock文件,搜索了一下资料:mysql.sock是用于socket连接的文件。也就是只有你的守护进程启动起来这个文件才存在。但是你的mysql程序(这个程序是客户端,服务器端是mysqld)可以选择是否使用mysql.sock文件来连接(因为这个方法只适合在Unix主机上面连接本地的mysqld),对于非本地的任何类型的主机。那么这个文件是否一定需要的呢?这个需要进一步了解清楚。
2:我在网上看有些网友总结的修改MySQL数据路径,有些需要给新建的目录的权限做一些处理,而有些有不用对目录权限进行授权,我没有处理,也没有什么问题。到底要不要对新的数据库目录授权呢?
3:我在MySQL_5.6.20这个版本测试时,不修改my.cnf,只修改启动脚本/etc/init.d/mysql,也完全没有啥问题。也没有myssql.sock文件生成。
4:注意如果没有禁用selinux,修改MySQL的数据路径后启动MySQL服务会遇到一些错误。关于这个的解释是后台服务都需要有对相应目录的对应权限,而 mysql的默认路径/var/lib/mysql已经添加了相应的策略,修改路径后由于没有相应的策略,导致后台进程读取文件被selinux阻止,从而出现权限错误。所以要么关闭Selinux或修改文件安全上下文。
[root@DB-Server mysql]#/etc/init.d/mysql start
Starting MySQL....The server quit without updating PID file(/u01/mysqldata/mysql//DB-Server.localdomain.pid).[FAILED]
[root@DB-Server mysql]#
[root@DB-Server mysql]# chcon-R-t mysqld_db_t/u01/mysqldata/mysql/
[root@DB-Server mysql]#/etc/init.d/mysql start
Starting MySQL.[ OK ]
[root@DB-Server mysql]#
总结
如何在MySQL中修改表数据名mysql中修改表数据名
如何在MySQL中修改表数据名
在MySQL中修改表数据名的命令是ALTER TABLE,其基本用法为:
ALTER TABLE table_name RENAME TO new_table_name;
table_name是要修改的表名,new_table_name是修改后的表名。
在实际操作中,我们可以通过以下几种方式来使用ALTER TABLE命令修改表数据名。
1.直接使用ALTER TABLE命令
我们可以直接在MySQL的命令行中使用ALTER TABLE命令来修改表数据名。现在我们要将表“student_info”改名为“new_student_info”,则可以执行以下命令:
ALTER TABLE student_info RENAME TO new_student_info;
2.在phpMyAdmin中使用ALTER TABLE命令
phpMyAdmin是MySQL的一个常用的Web管理工具,其提供了一个可视化的界面,方便用户进行各种数据库维护操作。在phpMyAdmin中,我们同样可以使用ALTER TABLE命令来修改表数据名。
我们需要登录到phpMyAdmin,并选择对应的数据库。在左侧导航栏中找到要修改的表,点击其名称。在右侧面板中,选择“操作”选项卡,点击“重命名”按钮。
在弹出的对话框中,我们可以输入新的表名,并点击“执行”按钮来完成修改操作。
3.使用MySQL Workbench进行修改
MySQL Workbench是MySQL的一个管理工具,提供了可视化的界面,支持用户对数据库进行各种操作。在MySQL Workbench中,我们同样可以使用ALTER TABLE命令来修改表数据名。
我们需要打开MySQL Workbench,并连接到对应的MySQL服务器。选择要修改的数据库,在左侧导航栏中找到要修改的表,右键点击其名称,选择“重命名”选项。
在弹出的对话框中,我们可以输入新的表名,并点击“应用”按钮来保存修改。
在修改表数据名之后,原先对该表的引用都将失效。如果有其他表或存储过程需要引用该表,则需要手动修改其引用名。
总结
通过本文的介绍,我们可以知道如何在MySQL中使用ALTER TABLE命令来修改表数据名。使用增删改查操作时,需慎重考虑数据表非常重要。我们需要掌握好相关的命令,以便在操作时更加得心应手。