- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我运行以下命令时:
SELECT p.*,
(SELECT i.image
FROM pimage i
WHERE p.id = i.pid
ORDER BY i.id ASC
LIMIT 1
) as image
FROM products p
WHERE p.categories LIKE '%$subCatId%'
ORDER BY p.id ASC
在具有下表的数据库上:
pImage
products
sidebar
specs
我收到错误:
#1142 - SELECT command denied to user 'database_user'@'localhost' for table 'pimage'
不幸的是,今天下午它在我的制作网站上以纯文本形式打印了十几次。
我在网站的本地版本上发布之前对其进行了测试,它运行得很好。我很快恢复了更改,并在开发网站上进行了测试。当存储在 PHP 代码中时,它在开发服务器上运行得很好。我还在开发服务器的 phpMyAdmin 界面上测试了它,它工作得很好。我登录到生产网站的 phpMyAdmin 界面,并在那里运行查询,但失败并出现相同的错误。我分别对每个表运行查询,它们顺利通过,没有错误。
什么给了?!?
制作网站相当过时。它运行 FreeBSD 6.4(是的,EOL 是 2010 年 11 月 30 日...)和 MySQL 5.1(是的,EOL 是 2013 年 12 月 31 日...)。我正在努力将其从共享托管中移出,以便我可以更新它。开发服务器是当前的Bitnami LAMP堆栈虚拟机,运行Ubuntu 14.04和MySQL 5.5。到目前为止,我还没有遇到过兼容性问题。据我所知,该查询没有使用两个版本之间不同的任何语法或特殊功能。
最佳答案
我以管理用户身份登录数据库,它返回错误:
#1146 - Table 'company.pimage' doesn't exist
这很快就解决了原始问题:pimage
和 pImage
之间出现愚蠢的大小写错误。
之前未检测到此错误,因为 Bitnami 设备已更改默认值以使其表名称不区分大小写,并且 MySQL 中非管理员用户的错误消息不会泄漏信息。
MySQL 文档,section 9.2.2 "Identifier Case Sensitivity"阅读:
By default, table aliases are case sensitive on Unix
但这可以通过 lower_case_table_names
进行更改系统变量。
If set to 0, table names are stored as specified and comparisons are case sensitive. If set to 1, table names are stored in lowercase on disk and comparisons are not case sensitive. If set to 2, table names are stored as given but compared in lowercase...
On Unix, the default value of lower_case_table_names is 0. On Windows the default value is 1. On OS X, the default value is 2.
在我的开发服务器上,SHOW VARIABLES
表明 Bitnami 设备已将此值设置为 1。mysqld --verbose --help
建议编译的默认值具有此值值设置为零,但是 as described on the bitnami forums , /opt/bitnami/mysql/scripts/ctl.sh
设置 --lower-case-table-names=1
。
非管理员用户的错误消息很神秘:
#1142 - SELECT command denied to user 'user@localhost' for table 'mispelled_table'
但是管理员用户的错误消息:
#1146 - Table 'company.mispelled_table' doesn't exist
很容易理解。管理员用户拥有 SHOW GRANTS FOR CURRENT_USER
权限:
GRANT USAGE ON *.* TO 'admin_user'@'%' IDENTIFIED BY PASSWORD [redacted]
GRANT ALL PRIVILEGES ON `company`.* TO 'admin_user'@'%' WITH GRANT OPTION
但普通用户拥有权限:
GRANT USAGE ON *.* TO 'user'@'localhost' IDENTIFIED BY PASSWORD [redacted]
GRANT SELECT ON `schap`.`pImage` TO 'user'@'localhost'
GRANT SELECT, SELECT (view_count), UPDATE (view_count) ON `company`.`products` TO 'user'@'localhost'
...etc.
这最后一点只是猜测,因为我没有必要的权限来更改和测试它,但我认为 SHOW_DATABASES
privilege会给用户良好的错误消息。避免列出所有数据库名称可能是个好策略,因为它可以防止黑客轻松确定哪些表存在,但它肯定会造成很多困惑!
关于MySQL "command denied to user for table"错误和用户权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31254031/
export class UserListComponent implements OnInit{ users; constructor(private userService: UserS
我最近在我的系统中遇到了 Java 语言环境的问题,我试图用这个配置运行一个项目: -Duser.language=pt_BR -Duser.country=BR 谷歌搜索后,我找到了this sit
1 当我希望出现注册错误时,我的代码出现问题:管理器不可用; 'auth.User' 已替换为 'users.User' ,我尝试解决其他问题,与 Manager 不可用相同; 'auth.User'
Loopback 非常酷,但这是我迄今为止遇到的一个缺点,我真的不确定如何解决它。内置用户模型在我的 MongoDB 数据库中生成一个名为“User”的集合,当我尝试根据 Loopback.js 自己
我在 aws cognito 中有以下用户组。行政成员付费成员(member) 我想在所有用户注册我的应用程序时将所有用户默认分配到 Member 用户组,这样我就可以为该用户组分配不同的 IAM A
blogsIndex.blade.php @extends('layouts.default') @section('details')
我正在尝试在Rails 3开发环境中使用sqlite3而不是MySQL,但是遇到了问题。尝试执行rake db:migrate时,我得到: SQLite3::SQLException: no such
尝试使用 构建 API Phoenix v1.3 按照本教程: https://dreamconception.com/tech/phoenix-full-fledged-api-in-five-mi
我正在使用通过模板 cookie-cutter 创建的 Django。当我尝试在本地使用 docker 运行项目时,出现以下错误。 FATAL: password authentication fai
我正在尝试使用 node.js/adonis 创建新用户 我创建了这两个函数: const User = use("App/Models/User") async store ({ request,
我想安排一些事情,例如 GET 请求 http://example.com/user/foo@bar.com 内部调用脚本 /var/www/example.com/rest/user/GET.php
我是一名具有可用性工程背景的软件开发人员。当我在研究生院学习可用性工程时,其中一位教授有一句口头禅:“你不是用户”。我们的想法是,我们需要将 UI 设计基于实际的用户研究,而不是我们自己关于 UI 应
您好,我正在制作一个使用互联网发送消息的消息传递应用程序。我需要从用户 a 向用户 b 发出通知。 我使用这段代码: if (toUser!= nil){ parseMessage[@
在 ruby/ror 中你可以这样做: user = User.new(params[:user]) 它使用发布表单中的值填充新对象。 使用 django/python 可以完成类似的事情吗? 最
每当我编辑用户的角色时,用户都需要注销并重新登录以查看更改。提升用户时没有问题,因为他们在再次登录之前不会看到额外的权限。但是,当降级发生时,用户仍将保留其现有角色,这会带来安全风险。想象一下,撤销一
我的核心数据有线问题。使用 iOS 10 中的 Swift3,每次使用 获取或存储数据时,我都会获得托管对象上下文 func getContext () -> NSManagedObjectCont
我发现当我使用 users_path(user) 时它返回 /users.id 其中 id 是用户的 ID 但我希望它返回 /用户/ID。我的配置 routes.rb 如下所示。 # config/r
我的应用程序在我的测试设备上正常运行(当我通过 ADT 安装它时,当我通过导出的 APK 文件安装它时)但它在 Play Store 测试设备上失败并出现以下错误: Permission Denial
创建模型的第一个条目会抛出错误 我执行了以下命令进行迁移 manage.py makemigrations manage.py migrate 在我执行这些命令以在数据库中创建第一个“数据”之后,一切
我正在尝试实现一个 getter,但它在下面代码 fragment 的最后一行向我显示了这个错误。 代码是—— class AuthRepository extends BaseAuthReposit
我是一名优秀的程序员,十分优秀!