背景:yum安装mysql的时候,数据库的data目录默认是在/var/lib下,由于默认mysql装的分区盘空间很小,需要修改对应存储数据文件路径,出于数据安全性的考虑把它挪到 /home/mysql下

◆  ◆  ◆  步 骤  ◆  ◆  ◆

1)查看mysql数据存放目录

2)备份Mysql数据表,停止Mysql服务

3)创建新的数据库存放目录

4)移动/复制数据库目录文件到新的存放目录

5)修改mysql数据库目录权限

6)修改Mysql、PHP配置文件

7)修改php配置文件(/etc/php.ini)中的socket路径,重启php

8)重启Mysql服务

◆  ◆  ◆  步 骤 详 解  ◆  ◆  ◆

下面对上面的步骤进行介绍。

1. 查看mysql数据存放目录

mysql -uroot -p    #进入数据库

mysql>show variables like '%dir%’;    #查看sql存储路径

(查看datadir 那一行所指的路径)

mysql运行目录转移到另一台服务器运行不了_sql

2. 备份mysql数据,停止mysql服务

移动/复制之前,先备份一下数据表数据,如果迁移失败,还能恢复原有数据表结构及数据。命令:

mysqldump -uroot -p -h127.0.0.1 -P3306 --all-databases > allbackupfile.sql

使用mysqladmin来关闭之前启动的mysql服务器:

mysqladim -uroot -p shutdowm -S /home/mysql/mysql.sock

3.  创建新的数据库存放目录

在root权限下,创建新的数据目录文件:

mkdir /home/mysql

这里是从/var/lib/mysql-->/home/mysql,因为home下磁盘空间比较大,足够满足空间上的需要。

4.  移动/复制数据库目录文件到新的存放目录

将/var/lib下的mysql目录mv(移动)或cp(拷贝)/home/mysql到目录。如果mv命令能保留文件的所有属性和权限,cp命令,需要重新设置Mysql的权限。

mv /var/lib/mysql/* /home/mysql

cp  -P /var/lib/mysql/* /home/mysql

5. 修改mysql数据库目录权限

修改用户、用户组权限:

chown mysql:mysql -R /home/mysql/

chmod ug+rwx *

6. 修改Mysql配置文件

a)/etc/my.cnf

将datadir和socket的路径改为/home/mysql目录下。

b)/etc/init.d/mysqld【修改datadir的目录】

之前的代码

get_mysql_option mysqld datadir "/var/lib/mysql"

修改为:

get_mysql_option mysqld datadir "/home/mysql"

c)/usr/bin/mysqld_safe【修改datadir的目录】

DATADIR=/var/lib/mysql

DATADIR=/home/mysql

safe_mysql_unix_port=${mysql_unix_port:-${MYSQL_UNIX_PORT:-/var/lib/mysql/mysql.sock}} 修改为safe_mysql_unix_port=${mysql_unix_port:-${MYSQL_UNIX_PORT:-/home/mysql/mysql.sock}}

7.修改php配置文件(/etc/php.ini)中的socket路径,重启php

千万不要忘记了php.ini里也要指明socket的路径,否则php会无法连接到数据库的。php.ini里默认socket路径是空的,默认是指向/var/lib/mysql,所以也要改为/home/mysql。修改之后重启PHP服务。

mysql.default_socket = /data/mysql/mysql.sock

mysql.default_socket = /data/mysql/mysql.sock

8. 重启Mysql

◆ ◆  ◆  遇 到 问 题总 结  ◆ ◆ ◆

问题:链接数据库必须使用-h127.0.0.1

原因:Mysql服务端,客户端都要进行配置

解决:/etc/my.cnf下添加以下代码,即可实现用,mysql -uroot -p连接。

socket=/home/mysql/mysql.sock

问题:启动mysql报错Can't find file: './mysql/plugin.frm’

重启mysql以后突然报错,详情如下:

19:08:18 [ERROR] mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)

19:08:18 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.

19:08:18 [Note] Server socket created on IP: '0.0.0.0'.

19:08:18 [ERROR] mysqld: Can't find file: './mysql/host.frm' (errno: 13)

19:08:18 [ERROR] Fatal error: Can't open and lock privilege tables: Can't find file: './mysql/host.frm' (errno: 13)

原因:权限问题

解决:进入plugin.frm所在目录,发现所有文件的权限不知何故都变成root了,执行下面命令,修改权限为mysql【chown mysql.mysql *】。

重启mysql成功。

问题:mysql.sock找不到

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

原因及解决:

一种是mysql.sock存在,但是配置路径不对

正常情况下mysql.sock位于mysql/tmp当中,配置文件是mysql/etc/my.cnf

另一种是mysql.sock压根不存在。

如果压根不存在,就运行mysql/bin/mysql_install_db

和mysql/bin/mysqld_safe。

重建授权表,/usr/bin,执行mysql_install_db脚本,对mysql中的data目录进行初始化并创建一些系统表格。

修改密码

mysql> use mysql;

mysql> update user set password=password("") where user="root";

mysql> flush privileges;

重启服务