如何在mySQL上正确解析ERROR 1044?这里的其他答案不能解决问题

问题描述 投票:0回答:1

我正在研究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用户密码。我尝试了用户密码和错误。试图寻找或重置它,显然我没有任何特权或权利。我试着修复它,你知道,另一个错误。 >:o

有人可以帮忙解决ERROR 1044的问题吗?有没有理由我遇到这么多问题?它是一个有缺陷的RDBMS还是与我的实际计算机及其处理方式有关的问题?是否有一个很好的解决方案来摆脱所有问题,只需使用RDBMS而不需要Some Assembly Required。

mysql linux mongodb linuxmint
1个回答
0
投票

它是一个有缺陷的RDBMS ......?

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

(我不能告诉你我有多久没有讽刺的说法。)

您的授权显示您的phpmyadmin用户仅具有phpmyadmin数据库的权限。

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

权限ALL PRIVILEGES ONphpmyadmin.*意味着您拥有phpmyadmin数据库的所有表的权限。您没有任何其他数据库的权限。所以,当你尝试USE preciousMetals;时,它会立即拒绝该请求。

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

通过类比,如果您尝试使用cd <directory>,如果您没有权限这样做,就像在Linux上一样。如果你这样做,你会 - 正确 - 得到一个错误。

$ 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进程。这是使用shell命令作为Linux root用户完成的: $ sudo service mysql restart

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

这显然不是您将MySQL用于实时应用程序的方式,因为它会危及所有安全性。但是,如果您正在努力获取权限,而您只想在本地实例上学习SQL,请继续。

© www.soinside.com 2019 - 2024. All rights reserved.