MySQL5.7修改数据路径

确认自己的mysql和操作系统版本,我的版本信息如下:
MySQL版本:MySQL5.7.31
操作系统版本:centos7.8

# 查看mmysql版本
mysql -V

mysql  Ver 14.14 Distrib 5.7.31, for Linux (x86_64) using  EditLine wrapper

# 查看操作系统版本
cat  /etc/redhat-release

CentOS Linux release 7.8.2003 (Core)
  1. 关闭selinux
# vim /etc/sysconfig/selinux
SELINUX=disabled

# 修改后需要重启服务器
reboot

# 重启后检查selinux的状态
sestatus –v
  1. 停止mysql服务
    -> systemctl stop mysqld.service

  2. 修改mysql配置
    通过yum安装的mysql配置文件默认路径在 /etc/my.cnf,修改配置文件中修改datadir,socket,log-error这几个参数的路径;完整配置信息如下
    -> vim /etc/my.cnf

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M

# 数据存放路径
datadir=/home/mysql/data
socket=/home/mysql/data/mysql.sock
# 默认配置
#datadir=/var/lib/mysql
#socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

# 日志文件存放路径
log-error=/home/mysql/log/mysqld.log
#log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

# 设置MySQL server编码格式
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci

# 关闭SSL
skip_ssl

[client]
port=3306
# 需要在[client]下添加socket参数,否则本地通过 mysql -u root -p连接mysql会报错
socket=/home/mysql/data/mysql.sock
  1. 创建数据存放目录并拷贝原有数据到新目录下
# 创建数据和日志目录
mkdir -p /home/mysql/data
mkdir -p /home/mysql/log

# 拷贝原有数据到新目录下
cp -a /var/lib/mysql/* /home/mysql/data/

# 创建socket软连接
# 命令格式:ln-s  <源文件> <软连接名>
ln -s /home/mysql/data/mysql.socket /var/lib/mysql/mysql.socket
# 如果软连接已存在需要删除当前的软连接重新生成
# 删除软连接直接使用 rm -rf <软连接地址> 命令,不过要注意软连接地址后面不能带 "/"。
# 带"/"命令会删除【软连接目录下的所有文件】,而不是删除【软连接】
rm -rf /var/lib/mysql/mysql.socket

# 修改目录权限
chown mysql.mysql -R /home/mysql/
  1. 启动mysql
    -> systemctl start mysqld.service
    -> mysql -u root -p
    修改后可以成功登陆mysql
    在这里插入图片描述

错误汇总

问题:使用 mysql -u root -p 连接mysql时会报错:ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)

解决方案:
有可能是 /etc/my.cnf 配置文件中设置了 [mysqld] 的 socket 参数,而没有设置[client]的 socket 参数,在my.cnf配置文件中增加socket参数,参考上面完整配置信息;

mysql导入导出数据

# 参数详解:
# -h 要连接的MySQL数据库ip
# -u  MySQL登录账号
# -p MySQL登录账号密码,可以不填写运行命令后会提示输入密码
# schema_name 要导出的数据库名称
# table_name  要导出的表名
# --where 直接写where条件即可
# filePath 生成的文件全路径
mysqldump -h  [hostname] -u [username] -p  --skip-lock-tables [schema_name]  [table_name] --where="search_column='search_value'"  --triggers=false --replace>[filePath];

# 命令示例:
# 导出整个schema库表结构和数据命令格式:mysqldump -u root -p schameName > /path/fileName.sql
mysqldump -u root -p test_schema > /home/test_schema.sql

# 根据筛选条件导出制定表的数据
mysqldump -h  localhost -u root -p  --skip-lock-tables test_schema  user_table --where="user_name in('zhangsan','lisi','xiaoming') and is_deleted=0"  --triggers=false --replace>/var/lib/mysql-files/user_table.sql;


# 执行数据导入命令
# 登录需要导入数据的mysql服务器
mysql -u root -p
# 选择需要导入的schema库
use test_schema
# 导入SQL文件
source /home/test_schema.sql
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值