mysql - 用户 'root'@'localhost' 拒绝访问数据库 'drupal'
问题描述
我正在使用尚未配置自己的 MySQL 服务器,并且在涉及 SQL 时我有点菜鸟。
我创建了一个这样的数据库:
root@localhost:~# mysqladmin -u root -p create drupal
然后尝试授予这样的权限:
root@localhost:~# mysql -u root -p
MariaDB [(none)]> GRANT ALL PRIVILEGES ON drupal.* TO root IDENTIFIED BY ...;
但是得到这个错误:
ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'drupal'
[更新] 所有形式的 GRANT 命令都出现此错误。
但根据 SHOW GRANTS 我应该有特权:
MariaDB [(none)]> SHOW GRANTS;
+---------------------------------------------------------------------------
-------------------------------------------+
| Grants for root@localhost
|
+---------------------------------------------------------------------------
------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD
'*...' |
+---------------------------------------------------------------------------
-------------------------------------------+
1 row in set (0.00 sec)
MySQL 版本为:mysql Ver 15.1 Distrib 10.1.26-MariaDB On Debian 9.5
解决方案
问题是 root 用户没有授予权限。
SELECT host,user,password,Grant_priv,Super_priv FROM mysql.user;
我用这个命令修复了它:
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;
GRANT ALL ON *.* TO 'root'@'localhost';
您必须注销并重新登录才能正常工作。
推荐阅读
- c++ - 未知文件类型:basic_oarchive.o(boost 和 emscripten)
- clojure - JVM:在 Clojure 中使用全局原子作为应用程序缓存存储——合适吗?
- html - 响应式图像、srcset 和尺寸
- docker - Docker 卷文件权限
- mysql - 如何在mysql中找到字符串类型列的模式?
- ios - 约束未在 swift 中更新
- php - 如何使用 laravel 和数据表加载大约 500 万数据的海量数据?我也有服务器端处理中的分页问题
- python - 在windows下的函数内执行本地化格式化
- pine-script - 隐藏绘图值
- python - Kivy 按钮:如何分配在同一类中的另一个函数中定义的 on_press 命令