MySQL报错MY-010390安全权限设置失败,远程帮忙修复方案分享
- 问答
- 2025-12-28 07:25:31
- 2
开始)
这个MY-010390的错误,其实挺常见的,特别是当你新安装好一个MySQL数据库,第一次启动,或者是在一些自动化脚本里初始化数据库的时候,这个错误信息,说白了,就是MySQL想给自己做一些基本的安全设置,但是没做成,这个安全设置的过程,官方术语叫做“初始化”,或者叫“安全引导”,这个过程里,MySQL会尝试干几件重要的事:比如为默认的‘root’用户设置一个密码(如果你没指定的话,它会生成一个临时密码),删除一些用于测试的数据库和账户,还有确保‘root’用户只能从本地登录,不能随便从外面连进来,等等,这个MY-010390报错,就是卡在了这个环节。
根据MySQL官方文档和一些常见的运维经验分享,比如一些技术博客像“MySQL Server Team Blog”、“Percona Blog”以及像Stack Overflow这样的问答社区里用户的实际遭遇,出现这个问题的原因有好几种,但核心思想都差不多:MySQL进程的权限不够,它没办法按照预期去修改它自己系统数据库(主要是mysql这个库)里的用户权限表。
下面我就把几种最常见的原因和对应的远程修复方法,像聊天一样跟你说说,你可以根据你遇到的具体情况来试试。
第一种情况,也是最最常见的一种:数据目录的权限不对。

MySQL在运行的时候,是以一个特定的系统用户身份来跑的,比如在Linux下通常叫mysql用户,在Windows下可能是一个叫MySQL的服务账户,这个用户必须对MySQL存放所有数据文件的那个文件夹(叫做“数据目录”,datadir)拥有完全的读写权限,如果这个文件夹的拥有者是root用户,或者权限设置成了只有root才能写,那么mysql用户就没法在里面创建文件或者修改文件了,安全初始化自然就失败了。
怎么修呢? 如果你是远程连到服务器上,你需要有root或者sudo的权限。
- 先找到你的MySQL数据目录在哪,你可以通过命令
mysql --help | grep datadir来查看默认位置,或者去MySQL的配置文件my.cnf(可能在/etc/my.cnf或/etc/mysql/my.cnf)里找datadir这一行。 - 把这个数据目录的所有权改成mysql用户和mysql组,命令大概是这样的:
sudo chown -R mysql:mysql /你的/数据目录/路径,比如常见路径是/var/lib/mysql,那就执行sudo chown -R mysql:mysql /var/lib/mysql,这个-R参数很重要,意思是把目录底下所有子文件和子文件夹的权限都一起改了。 - 改完权限之后,再重启一下MySQL服务:
sudo systemctl restart mysql或者sudo service mysql restart,这时候你再去看日志,可能错误就消失了。
第二种情况,可能是在用mysqld --initialize命令初始化时,本身就没成功。
可能数据目录不是空的,里面有些残留的文件,这会导致初始化失败,或者初始化命令执行的时候,当前用户的权限就不够。

修复方法:
- 非常重要:如果数据目录里有重要数据,千万别这么干! 只有在确定是全新安装、或者可以清空数据的情况下才能操作。
- 停掉MySQL服务。
- 把数据目录整个删掉,或者把里面的东西都清空。
sudo rm -rf /var/lib/mysql/*。 - 然后重新执行初始化命令,对于MySQL 5.7及以上版本,通常是用
sudo mysqld --initialize --user=mysql,这个命令会重新创建数据目录并生成一个临时的root密码(密码会写在日志里),初始化成功后,再启动服务。
第三种情况,SELinux或者AppArmor这些安全模块在“捣乱”。
特别是在CentOS、Red Hat或者Ubuntu这些系统上,它们自带了强制访问控制机制,这些机制的本意是增强安全,但有时候会过于严格,阻止MySQL进程去访问它需要的文件,导致权限设置失败。
修复方法(临时和永久两种):

- 临时禁用(用于快速排查问题):你可以暂时把SELinux设为宽容模式:
sudo setenforce 0,然后重启MySQL服务,看看错误是否还在,如果错误没了,那就说明是SELinux的问题。 - 永久解决:不建议长期禁用SELinux,正确的做法是给MySQL相关的文件和目录设置正确的SELinux安全上下文,一个比较通用的命令是:
sudo restorecon -R /var/lib/mysql,如果这还不行,可能需要更详细的策略调整,或者可以尝试生成自定义的SELinux策略模块来放行MySQL的操作,AppArmor也是类似的道理,可能需要修改/etc/apparmor.d/usr.sbin.mysqld这个配置文件。
第四种情况,适用于Windows服务器。
在Windows上,问题可能出在用来运行MySQL Windows服务的那个账户上,默认可能是“Network Service”账户,这个账户的权限可能不够。
修复方法:
- 打开“服务”管理器(services.msc)。
- 找到MySQL服务,右键点击“属性”。
- 切换到“登录”选项卡。
- 尝试换一个具有更高权限的账户来登录,Local System”账户(注意这有安全风险,仅用于测试),或者你专门为MySQL创建的一个有适当权限的域用户/本地用户。
- 重启服务。
通用的排查思路。
当你远程帮人解决这个问题时,第一步永远是看日志!MySQL的错误日志(通常就在数据目录下,文件名像host_name.err)会给出最详细的线索,MY-010390只是一个错误代码,日志里在这个代码前后通常会有更具体的描述,无法创建文件”、“权限被拒绝”等等,这些信息能帮你快速定位到是上面哪一种情况。
解决MY-010390的关键就是确保MySQL进程有足够的权限去读写它的数据目录,并且没有其他安全软件阻挡它,按照从简到繁的顺序,先检查文件和目录权限,再考虑安全模块,基本就能搞定大部分情况了。 结束)
本文由邝冷亦于2025-12-28发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:https://haoid.cn/wenda/69900.html
