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

标签 mysql linux mongodb linux-mint

我正在学习 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/

相关文章:

json - 合并 mongodb 上的两个集合

mysql - 如何使用 SQL 查询计算计费通话费用

php - 如何计算 sphinx 的结果?

linux - 如果文件不存在,如何创建它的完整路径?

linux - 通过蜂窝网络 Webify 嵌入式基于 linux 的 Controller

javascript - 错误 : Cannot find module './lib/mediaType' "(after successful login)

mysql - 我们什么时候应该使用一对一关系模型而不是将属性添加到同一个表?

mysql - 如何修复 R 中的 "Error in .local(conn, statement, ...) : could not run statement: The used command is not allowed with this MySQL version"错误?

linux - 当 MP4Box 合并视频时,无法播放 part2 子视频

python - 无法通过类变量连接到MongoDB数据库和集合