gpt4 book ai didi

mysql - 如何正确解决 mySQL 上的 ERROR 1044?这里的其他答案不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 12:01:44 26 4
gpt4 key购买 nike

我正在学习 SQL 语言,并尝试在 Linux Mint 上使用 MySQL 来测试我的工作,但是我遇到了诸如 ERROR 1044 之类的问题。我尝试遵循这里的各种建议,但随后遇到了不同的问题错误代码,然后在尝试解决新问题时我看到了另一个错误代码,在尝试解决另一个新问题时我看到了另一个错误代码,并重复了令人作呕的内容。所以我从头开始,希望我的特定问题能够得到解决。

我试过了

mysql> USE preciousMetals;
ERROR 1044 (42000): Access denied for user 'phpmyadmin'@'localhost' to database 'preciousMetals'

检查了这个

mysql> show grants;
+--------------------------------------------------------------------+
| Grants for phpmyadmin@localhost |
+--------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'phpmyadmin'@'localhost' |
| GRANT ALL PRIVILEGES ON `phpmyadmin`.* TO 'phpmyadmin'@'localhost' |
+--------------------------------------------------------------------+
2 rows in set (0.00 sec)

我在提示符中输入这个命令

mysql> select user ();
+----------------------+
| user () |
+----------------------+
| phpmyadmin@localhost |
+----------------------+
1 row in set (0.00 sec)

然后这个

mysql> select current_user ();
+----------------------+
| current_user () |
+----------------------+
| phpmyadmin@localhost |
+----------------------+
1 row in set (0.00 sec)

我想让这个问题暂时保持整洁和“小”,这样它就不会到处都是。我要补充一点,我试图像一些帖子所说的那样以 root 身份进入,但我没有密码。在安装过程中,我从来没有为用户设置 root 密码。我尝试了用户密码和错误。试图寻找它或重置它,显然我没有任何特权或权利或其他东西。我试图解决这个问题,你知道的,另一个错误。 >:哦

有人可以帮忙解决 ERROR 1044 吗?我遇到这么多问题是有原因的吗?它是有问题的 RDBMS 还是与我的实际计算机及其处理方式有关的问题?是否有一个很好的解决方案来摆脱所有问题并仅使用 RDBMS 而无需需要一些程序集

最佳答案

Is it a buggy RDBMS ... ?

这不是错误,这是一个功能!

(我无法不讽刺地告诉你我等了多久才说出这句话。)

您的授权表明您的 phpmyadmin 用户仅对 phpmyadmin 数据库具有权限。

特权USAGE ON *.*意味着您可以连接到 MySQL 服务器,但这并不意味着您对该服务器上的任何数据库都有任何权限。

特权ALL PRIVILEGES ON phpmyadmin .*意味着您对 phpmyadmin 数据库的所有表都有权限。您对任何其他数据库都没有特权。所以当你尝试 USE preciousMetals;它立即拒绝请求。

您无权访问某些特定资源这一事实并不是软件中的错误。

打个比方,这就像在 Linux 上,如果您尝试 cd <directory>如果您没有这样做的权限。如果你这样做,你会——正确地——得到一个错误。

$ cd secret_directory
-bash: cd: secret_directory: Permission denied

您需要授予 phpmyadmin 用户更大的权限。您可以访问 root 吗? MySQL账户?这通常是拥有所有数据库的所有权限的人,并且能够将权限授予其他 MySQL 用户。

至于您的第二个问题,至少有一个其他 SQL 数据库产品根本不强制执行 GRANT/REVOKE 或特权:SQLite .只要您有权在 Linux 级别打开数据库文件,您就可以自由访问其中的所有表。没有实现访问权限系统。但是 SQLite 并不完全是 MySQL 的替代品。不支持并发多用户访问、网络连接或您可能需要的许多其他功能。


对于 MySQL,您可以在不强制执行密码或权限的模式下运行它。

  1. 编辑 MySQL 选项文件(在 Linux 系统上通常为 /etc/my.cnf)。
  2. 添加禁用强制执行的选项。这应该位于 [mysqld] 下方的任何位置选项文件中的选项组。

    [mysqld]
    skip_grant_tables
  3. 重新启动 mysqld 进程。这是以 Linux root 用户身份使用 shell 命令完成的:

    $ sudo service mysql restart

之后,您将不需要输入密码,也不会强制执行 SQL 权限。

这显然不是您将 MySQL 用于实时应用程序的方式,因为它会危及所有安全性。但是,如果您在特权方面苦苦挣扎,而只想在本地实例上学习 SQL,那就继续吧。

关于mysql - 如何正确解决 mySQL 上的 ERROR 1044?这里的其他答案不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52153725/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com