一、问题现象描述
在通过物理复制方式迁移宝塔面板的MySQL数据库文件后,常出现数据库无法写入、用户权限失效或操作被拒绝的情况。典型错误包括:ERROR 1045 (28000)
访问拒绝,或执行mysqldump
时提示权限不足。这种情况通常由文件系统权限与MySQL用户权限不匹配引起。
二、核心解决方案步骤
通过SSH或宝塔面板执行以下操作:
- 修改数据文件权限
- 进入数据库目录:
cd /www/server/data
- 修改目录权限:
chown -R mysql:mysql ./ && chmod 700 ./
- 修改文件权限:
find . -type f -exec chmod 660 {} \;
- 进入数据库目录:
- 验证MySQL用户权限
- 登录MySQL:
mysql -uroot -p
- 执行授权命令:
GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost'; FLUSH PRIVILEGES;
- 登录MySQL:
# 递归修改数据目录权限
chown -R mysql:mysql /www/server/data
chmod 700 /www/server/data
三、高级排查与配置调整
若基础权限调整无效,需进行以下深度排查:
- 检查SELinux状态:临时禁用
setenforce 0
测试写入功能 - 验证MySQL配置文件:检查
/etc/my.cnf
中datadir
路径是否正确 - 重建用户权限:通过
mysql_install_db
重新初始化系统表
对于MySQL 8.0+版本,需特别注意query_cache
相关参数已被移除,错误的配置残留会导致服务启动失败。
物理复制导致的MySQL权限异常需同时处理文件系统权限和数据库用户授权,建议先通过chown/chmod
修正目录权限,再使用GRANT
语句刷新用户权限。复杂场景下需结合SELinux策略和配置文件进行综合调整。