MySQL数据库默认的数据库文件位于/var/lib/mysql下。有时由于存储规划等原因,需要更改MySQL数据库的数据存储目录。下面总结一下实际过程的操作步骤。1:确认MySQL数据库存放目录[root@DB-Servertmp]#mysqladmin-uroot-pvariables|grepdatadirEnterpassword:|datadir|/var/lib/mysql/2:关闭MySQL服务更改MySQL数据目录前,MySQL服务必须关闭。方法一:[root@DB-Server~]#servicemysqlstatusMySQLrunning(9411)[OK][root@DB-Server~]#servicemysqlstopShuttingdownMySQL..[OK][root@DB-Server~]#方法二:[root@DB-Server~]#/etc/rc.d/init.d/mysqlstatusMySQLrunning(8900)[OK][root@DB-Server~]#/etc/rc.d/init.d/mysqlstopShuttingdownMySQL..[OK][root@DB-Server~]#3:新建数据库存放目录[root@DB-Server~]#cd/u01[root@DB-Serveru01]#mkdirmysqldata4:将MySQL数据目录移动到新位置[root@DB-Server~]#mv/var/lib/mysql/u01/mysqldata/5:修改配置文件my.cnf。并非所有版本都包含配置文件my.cnf。在MySQL5.5中,我找不到my.cnf。对于某些MySQL版本,配置文件cnf位于/usr/my.cnf中。如果/etc/目录下没有my.cnf配置文件,请在/usr/share/mysql/下找到*.cnf文件,复制一份到/etc/下,重命名为my.cnf。命令如下:[root@DB-Servermysql]#cp/usr/share/mysql/my-medium.cnf/etc/my.cnf编辑/etc/my.cnf文件,修改参数socketMySQL5.5版本#ThefollowingoptionswillbepassedtoallMySQLclients[客户端]#password=your_passwordport=3306socket=/u01/mysqldata/mysql/mysql.sock#Herefollowsentriesforsomespecificprograms#TheMySQLserver[mysqld]port=3306socket=/u01/mysqldata/mysql/mysql.sockskip-external-lockingkey_buffer_size=16Mmax_allowed_pa??cket=1Mtable_open_cache=64sort_buffer_size=512Knet_buffer_length=8Kread_buffer_size=256Kread_rnd_buffer_size=512Kmyisam_sort_buffer_size=8M6:修改启动脚本/etc/init.d/mysql,将参数datadir改为datadir=/u01/mysqldata/mysql/7:启动MySQL服务,验证MySQL数据库path[root@DB-Server~]#servicemysqlstartStartingMySQL..[OK][root@DB-Server~]#mysqladmin-uroot-pvariables|grepdatadirEnterpassword:|datadir|/u01/mysqldata/mysql/我的问题:1:修改前数据库的存储目录,/var/lib/mysql/目录下没有mysql.sock文件。安装以上配置后,会生成mysql.sock文件。关于mysql.sock这个文件,我查了资料:mysql.sock是一个用于socket连接的文件。也就是说,这个文件只有在你的守护进程启动时才存在。但是你的mysql程序(这个程序是client,server是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-Servermysql]#/etc/init.d/mysqlstartStartingMySQL....TheserverquitwithoutupdatingPIDfile(/u01/mysqldata/mysql//DB-Server.localdomain.pid).[FAILED][root@DB-Servermysql]#[root@DB-Servermysql]#chcon-R-tmysqld_db_t/u01/mysqldata/mysql/[root@DB-Servermysql]#/etc/init.d/mysqlstartStartingMySQL.[确定][root@DB-Servermysql]#
