同一Ubuntu服务器运行MySQL 5.7与免安装MySQL 8的权限问题求助
解决MySQL 8通用二进制文件运行权限错误
问题分析
报错File './binlog.index' not found (OS errno 13 - Permission denied)本质是权限不匹配:要么运行mysqld的用户无目标目录读写权限,要么目录归属用户与运行用户不一致。由于系统已通过apt安装MySQL 5.7,默认使用mysql用户运行,而直接启动二进制版MySQL 8时大概率用了root用户,或目录权限未给mysql用户开放。
解决方案
1. 修正目录权限
将MySQL 8二进制包的安装目录及数据目录权限递归设置为mysql用户所有:
chown -R mysql:mysql /home/mysql8/mysql8base
如果数据目录单独在其他路径(比如/home/mysql8/mysql8data),也要同步修正该目录权限。
2. 用mysql用户启动MySQL 8
禁止用root用户直接启动,切换到mysql用户或通过sudo指定用户启动:
sudo -u mysql /home/mysql8/mysql8base/bin/mysqld --defaults-file=/home/mysql8/mysql8base/my.cnf &
注意:--defaults-file必须指定你的MySQL 8专属配置文件,确保配置中的datadir指向正确路径,且该路径已完成权限修正。
3. 明确二进制日志路径
若仍报错,检查配置文件中log_bin参数,避免使用相对路径,改为绝对路径确保mysql用户可访问:
# 在my.cnf中添加或修改 log_bin = /home/mysql8/mysql8base/data/binlog
修改后重新启动服务。
4. 规避与MySQL 5.7的冲突
确保MySQL 8使用独立的端口、socket文件,避免与系统apt安装的5.7版本冲突,在配置文件中添加:
port = 3307 socket = /home/mysql8/mysql8base/mysql.sock
内容的提问来源于stack exchange,提问作者iNextKB
相关产品推荐
相关产品推荐

