CentOS6.9下MySQL初始化指定home目录datadir报权限错误13
MySQL 8.0 自定义datadir初始化权限报错(OS errno 13)解决方案
核心问题
你已经确认datadir目录权限、属主正常且关闭了SELinux,仍出现权限拒绝,90%以上的概率是datadir的上层父目录没有给mysql用户开放执行权限:mysql用户需要对路径上的所有父级目录都有执行(x)权限,才能进入目标目录读写内容。CentOS默认普通用户的home目录/home/user权限为700,仅所有者可访问,mysql用户没有进入权限,就会触发该报错。
具体修复步骤
检查父级目录权限
执行如下命令确认/home和/home/user的权限:ls -ld /home /home/user正常
/home权限应为755,如果/home/user的权限是700,就会导致权限拦截。开放父目录执行权限
方案1:给所有用户开放/home/user的执行权限(操作简单)chmod o+x /home/user方案2:仅给mysql用户单独授权(更安全,需要ACL支持)
# 先安装ACL工具 yum install -y acl # 给mysql用户单独添加/home/user的执行权限 setfacl -m u:mysql:x /home/user重置datadir目录属性
确保目标数据目录的属主和权限正确:chown -R mysql:mysql /home/user/mysql-data chmod 750 /home/user/mysql-data重新执行初始化命令
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/home/user/mysql-data
额外排查项
如果上述操作后仍报错,可做如下检查:
- 执行
getenforce确认SELinux确实为Disabled状态,若为Enforcing说明关闭未生效,需修改/etc/selinux/config文件后重启服务器。 - 执行
lsattr /home/user/mysql-data检查是否有不可修改属性,若返回结果带i标识,执行chattr -i /home/user/mysql-data移除属性。 - 临时关闭iptables测试:
service iptables stop,排除防火墙规则拦截。
内容的提问来源于stack exchange,提问作者sriman narayana
相关产品推荐
相关产品推荐

