场景:mysql 数据库的数据文件默认安装的路径在/var/lib/mysql,但是实际中,我们在安装时常常就需要定制安装数据库路径,比如/data/mysql,或者/opt/mysql,通常是一个单独的一块盘或者分区,这样有利于性能调优和保护数据安全,同时也方便进行维护。
-
步骤:
-
Stop MySQL:
service mysql stop
-
Change Data Directory:
// 新建文件夹用于存放数据,并把mysql默认的数据文件拷贝至此文件夹
mkdir -p /data
cp -rap /var/lib/mysql /data 或者 mv /var/lib/mysql /data
// 改变新建文件夹的属主
chown -R -v mysql:mysql /data/mysql
// 现在编辑MySQL的默认配置文件/etc/my.cnf 修改datadir和socketvariable。
vi /usr/my.cnf
Change From: datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
Change To: datadir=/data/mysql
socket=/data/mysql/mysql.sock -
为mysql.sock加连接:
// 比如说实际的mysql.sock在 /data/mysql/mysql.sock 下
ln -s /data/mysql/mysql.sock /var/lib/mysql/mysql.sock; -
Start MySQL:
service mysql start
-
-
Q&A:
Q:以下是mysql数据目录修改出现:
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ ,本例是将Mysql的数据目录移动到了/home/data/下,即mysql.sock所在的真实目录为/home/data/mysql/mysql.sock,mysql有tcp连接和socket连接方式,而上面这种错误一般是因为mysql是使用rpm方式安装的,它会自动寻找 /var/lib/mysql/mysql.sock 这个文件,是一种socket连接方式。-
A:常见解决办法如下:
-
创建/修改文件 /etc/my.cnf文件,在[mysqld]上面添加:
[client]
// password=your_password
port=3306
// 在这里写上你的mysql.sock的正确位置
socket=/home/data/mysql/mysql.sock -
指定IP地址,使用tcp方式连接mysql,而不使用本地socket方式:
mysql -h127.0.0.1 -uuser -ppassword
-
为 mysql.sock 加个连接,比如说实际的mysql.sock在 /home/data/mysql/ 下,则:
ln -s /home/data/mysql/mysql.sock /var/lib/mysql/mysql.sock
-