MySQL更改数据库数据存储目录

数据库 MySQL
MySQL数据库默认的数据库文件位于/var/lib/mysql下,有时候由于存储规划等原因,需要更改MySQL数据库的数据存储目录。下文总结整理了实践过程的操作步骤。

MySQL数据库默认的数据库文件位于/var/lib/mysql下,有时候由于存储规划等原因,需要更改MySQL数据库的数据存储目录。下文总结整理了实践过程的操作步骤。

1:确认MySQL数据库存储目录 

  1. [root@DB-Server tmp]# mysqladmin -u root -p variables | grep datadir  
  2. Enter password:   
  3. | datadir | /var/lib/mysql/ 

2:关闭MySQL服务

在更改MySQL的数据目录前,必须关闭MySQL服务。

方式1: 

  1. [root@DB-Server ~]# service mysql status  
  2. MySQL running (9411)[ OK ]  
  3. [root@DB-Server ~]# service mysql stop  
  4. Shutting down MySQL..[ OK ]  
  5. [root@DB-Server ~]#  

方式2: 

  1. [root@DB-Server ~]# /etc/rc.d/init.d/mysql status  
  2. MySQL running (8900)[ OK ]  
  3. [root@DB-Server ~]# /etc/rc.d/init.d/mysql stop  
  4. Shutting down MySQL..[ OK ]  
  5. [root@DB-Server ~]#  

3:创建新的数据库存储目录 

  1. [root@DB-Server ~]# cd /u01  
  2. [root@DB-Server u01]# mkdir mysqldata 

4:移动MySQL数据目录到新位置 

  1. [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中。命令如下:

 

  1. [root@DB-Server mysql]# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf 

编辑/etc/my.cnf文件,修改参数socket

MySQL 5.5 版本 

  1. # The following options will be passed to all MySQL clients  
  2. [client]  
  3. #password       = your_password  
  4. port            = 3306  
  5. socket          = /u01/mysqldata/mysql/mysql.sock  
  6. # Here follows entries for some specific programs  
  7. # The MySQL server  
  8. [mysqld]  
  9. port            = 3306  
  10. socket          = /u01/mysqldata/mysql/mysql.sock  
  11. skip-external-locking  
  12. key_buffer_size = 16M  
  13. max_allowed_packet = 1M  
  14. table_open_cache = 64  
  15. sort_buffer_size = 512K  
  16. net_buffer_length = 8K  
  17. read_buffer_size = 256K  
  18. read_rnd_buffer_size = 512K  
  19. myisam_sort_buffer_size = 8M 

6:修改启动脚本/etc/init.d/mysql

将参数datadir修改为datadir=/u01/mysqldata/mysql/

7:启动MySQL服务并验证MySQL数据库路径 

  1. [root@DB-Server ~]# service mysql start  
  2. Starting MySQL..[  OK  ]  
  3. [root@DB-Server ~]# mysqladmin -u root -p variables | grep datadir  
  4. Enter password:   
  5. | 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或修改文件安全上下文。 

  1. [root@DB-Server mysql]# /etc/init.d/mysql start  
  2. Starting MySQL....The server quit without updating PID file (/u01/mysqldata/mysql//DB-Server.localdomain.pid).[FAILED]  
  3. [root@DB-Server mysql]#   
  4. [root@DB-Server mysql]# chcon -R -t mysqld_db_t /u01/mysqldata/mysql/  
  5. [root@DB-Server mysql]# /etc/init.d/mysql start  
  6. Starting MySQL.[ OK ]  
  7. [root@DB-Server mysql]#    
责任编辑:庞桂玉 来源: 数据库开发
相关推荐

2011-03-24 16:54:07

数据库名称

2010-07-05 17:41:37

SQL Server

2011-05-26 12:54:31

数据库数据库名

2018-05-02 08:48:58

Raid存储MySQL

2009-09-18 15:19:19

LINQ to SQL

2010-05-04 11:58:38

Oracle数据库

2019-06-20 15:25:14

MySQLL数据库存储

2009-04-29 16:10:14

2019-08-27 15:00:09

MySQL数据库存储

2011-08-29 16:27:16

MySQL时间类型

2010-10-14 13:18:55

MySQL存储过程

2010-10-21 14:12:07

SQL Server游

2009-05-27 11:01:29

UbuntuMySQL存储

2011-08-01 23:08:33

MySQL存储引擎

2018-07-13 09:20:30

SQLite数据库存储

2011-05-13 09:42:21

2011-03-03 17:56:52

MySQL数据库优化

2010-10-26 15:30:12

连接Oracle数据库

2019-06-10 14:31:24

MySQL存储数据库

2018-11-05 15:14:42

MySQL编程语言技术
点赞
收藏

51CTO技术栈公众号