背景: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 -p123456 #进入数据库
mysql>show variables like '%dir%’; #查看sql存储路径
(查看datadir 那一行所指的路径)
2. 备份mysql数据,停止mysql服务
移动/复制之前,先备份一下数据表数据,如果迁移失败,还能恢复原有数据表结构及数据。命令:
mysqldump -uroot -p123456 -h127.0.0.1 -P3306 --all-databases > allbackupfile.sql
使用mysqladmin来关闭之前启动的mysql服务器:
mysqladim -uroot -p123456 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=$} 修改为safe_mysql_unix_port=$}
7.修改php配置文件(/etc/php.ini)中的socket路径,重启php
千万不要忘记了php.ini里也要指明socket的路径,否则php会无法连接到数据库的。php.ini里默认socket路径是空的,默认是指向/var/lib/mysql,所以也要改为/home/mysql。修改之后重启PHP服务。
[mysql]
mysql.default_socket = /data/mysql/mysql.sock
[mysqli]
mysql.default_socket = /data/mysql/mysql.sock
8. 重启Mysql
◆◆◆ 遇 到 问 题总 结◆◆◆
1、
问题:链接数据库必须使用-h127.0.0.1
原因:Mysql服务端,客户端都要进行配置
解决:/etc/my.cnf下添加以下代码,即可实现用,mysql -uroot -p123456连接。
[mysql]
socket=/home/mysql/mysql.sock
2、
问题:启动mysql报错Can't find file: './mysql/plugin.frm’
重启mysql以后突然报错,详情如下:
171122 19:08:18 [ERROR] mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
171122 19:08:18 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
171122 19:08:18 [Note] Server socket created on IP: '0.0.0.0'.
171122 19:08:18 [ERROR] mysqld: Can't find file: './mysql/host.frm' (errno: 13)
171122 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成功。
3、
问题: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("123456") where user="root";
mysql> flush privileges;
重启服务
领取专属 10元无门槛券
私享最新 技术干货