You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

创建数据库提示权限拒绝及授权操作报错的解决方法求助

解决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

火山引擎 最新活动