升级MariaDB 11.3.2后root执行GRANT ALL报错的解决方法
解决MariaDB 11.3.2中root授权报错的SQL方案
针对你遇到的ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'pcom'问题,结合你提到的MDEV-33554相关bug,可尝试以下几种SQL命令解决:
1. 显式重新授予root对目标数据库的权限
虽然root已有*.*的全局权限,但受bug影响可能出现权限识别异常,先显式授予root对pcom库的权限:
GRANT ALL PRIVILEGES ON `pcom`.* TO `root`@`localhost` WITH GRANT OPTION; FLUSH PRIVILEGES;
执行后再重新运行原授权命令:
GRANT ALL PRIVILEGES ON `pcom`.* TO 'pcom'@'localhost';
2. 先创建用户再授权
若当前sql_mode包含NO_AUTO_CREATE_USER,原GRANT命令无法自动创建用户,需先显式创建:
CREATE USER IF NOT EXISTS 'pcom'@'localhost'; GRANT ALL PRIVILEGES ON `pcom`.* TO 'pcom'@'localhost'; FLUSH PRIVILEGES;
3. 移除数据库名的反引号尝试
部分场景下反引号可能触发权限检查bug,尝试不带反引号的授权命令:
GRANT ALL PRIVILEGES ON pcom.* TO 'pcom'@'localhost';
4. 临时绕过bug:先授予全局USAGE权限再限制
针对MDEV-33554的临时绕过方案,先给用户全局USAGE权限,再授予库级权限:
GRANT USAGE ON *.* TO 'pcom'@'localhost'; GRANT ALL PRIVILEGES ON `pcom`.* TO 'pcom'@'localhost';
额外检查步骤
- 确认
pcom数据库存在:
SHOW DATABASES LIKE 'pcom';
若不存在需先创建:
CREATE DATABASE IF NOT EXISTS `pcom`;
内容的提问来源于stack exchange,提问作者Archie
相关产品推荐
相关产品推荐

