创建数据库提示权限拒绝及授权操作报错的解决方法求助
解决MySQL权限错误(Errcode:13 - Permission denied)
看起来你碰到的是MySQL数据目录的权限问题——不管是创建数据库还是执行授权操作,本质都是MySQL运行进程没有足够的权限去读写数据目录下的文件和文件夹。我来一步步帮你搞定:
步骤1:确认MySQL运行的用户
首先得搞清楚MySQL是以哪个用户身份在运行的,执行下面的命令:
ps aux | grep mysql
输出里第一列的用户名就是(通常是mysql)。
步骤2:找到MySQL的数据目录
登录MySQL执行这条语句,查看数据目录路径:
SHOW VARIABLES LIKE 'datadir';
或者你也可以直接查看MySQL的配置文件(比如/etc/my.cnf或/etc/mysql/my.cnf)里的datadir配置项,常见的路径是/var/lib/mysql/。
步骤3:修复数据目录的权限
把数据目录及其所有子文件、子文件夹的所有者和组都改成MySQL运行的用户(比如mysql):
sudo chown -R mysql:mysql /path/to/your/datadir
替换/path/to/your/datadir为你刚才查到的实际路径,比如sudo chown -R mysql:mysql /var/lib/mysql/。
同时确保目录的权限设置正确(一般目录设为755,文件设为644),可以执行:
sudo chmod -R 755 /path/to/your/datadir
步骤4:重启MySQL服务
权限修改完成后,重启MySQL让设置生效:
- 如果你用的是systemd系统(比如Ubuntu 16.04+、CentOS 7+):
sudo systemctl restart mysql
- 如果你用的是sysvinit系统:
sudo service mysql restart
为什么会出现这些错误?
- 执行
create database spy;时,MySQL需要在数据目录下创建一个名为spy的文件夹来存放这个库的文件,没有写入权限就会抛出Can't get stat of './spy'错误。 - 执行
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost';时,MySQL需要修改mysql数据库里的user表(MyISAM引擎的表对应user.MYD数据文件),没有读写权限就会提示File './mysql/user.MYD' not found(其实不是找不到,是没权限访问)。
内容的提问来源于stack exchange,提问作者stack




