centos 修改mysql的默认数据库目录

本文解析了MySQL配置文件my.cnf中的关键选项,介绍了如何通过修改这些配置来改变数据库的数据目录、socket文件等路径,并提供了确保MySQL客户端正确连接的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于这个问题,网上说的内容很多,基本上可以解决问题,我现在分析的是为什么要这么操作,哪些操作是重复的!

get_mysql_option(){
        result=`/usr/bin/my_print_defaults "$1" | sed -n "s/^--$2=//p" | tail -n 1`
        if [ -z "$result" ]; then
            # not found, use default
            result="$3"
        fi
}

get_mysql_option mysqld datadir "/var/lib/mysql"
datadir="$result"
get_mysql_option mysqld socket "$datadir/mysql.sock"
socketfile="$result"
get_mysql_option mysqld_safe log-error "/var/log/mysqld.log"
errlogfile="$result"
get_mysql_option mysqld_safe pid-file "/var/run/mysqld/mysqld.pid"
mypidfile="$result"

上面一段代码是从mysqld这个脚本中截取出来的,我把他分成两部分

1.函数,这个函数接收3个参数,主要功能是读取12的值,如果存在,那么设置result为匹配的值,如果不存在就是用默认$3的值
2.调用了4次函数,定义了4个变量,我主要讲一下第一个datadir,从my.cnf中读取–datadir设置的值,如果存在那么datadir就是my.cnf中的值,如果不存在,那么就是默认的/var/lib/mysql
相信大家应该能看明白吧,修改默认数据库的位置,2选1,要么是my.cnf中配置,要么就是my.cnf中留空,修改mysqld中的默认值
socketfile这个也是同理,不过他的位置默认是在数据库文件的目录下面,所以my.cnf中不设置,那么就是默认,如果设置了,就是你自定义的位置

再来说下mysql这个命令,大家应该都知道是干什么,如果你修改了数据库的默认位置,那么sock这个文件默认也会改位置。
执行这个命令应该会报错,如何让他不报错,两种方法
1.在my.cnf [client] 下面增加socket=”/xxx/xxx/mysql.sock” mysql.sock的真实位置
2.ln -s “/xxx/xxx/xxx/mysql.sock” “/var/lib/mysql/mysql.sock” 在原始的mysql.sock位置做一个软链,指向真实的位置
其实就是mysql命令运行时需要mysql.sock,但是默认值是在 /var/lib/mysql/mysql.sock,如果你改了位置,那么一定要让这个命令能找到这个文件的真实位置。

像这种服务配置什么的,主要是了解它是怎么运行的,才能对症下药,找到好的修改或者解决问题的办法。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值