Database

共 8 篇文章。

PostgreSQL 安全漏洞 CVE-2024-4317

• Security

之前没有特别注意这个漏洞,这里稍微记一笔。

PostgreSQL 包含一系列系统视图,这些系统视图可以用来查询系统表。由于 pg_stats_ext 和 pg_stats_ext_exprs 这两个视图在 PostgreSQL 14-16 的 16.3、15.7 和 14.12 之前的版本中缺少了必要的访问控制,因此未经授权的用户将可以通过这些视图访问其他用户通过 CREATE STATISTICS 创建的一系列统计数据,而这些数据可能会揭示这些未经授权的用户原本没有权限访问的数据,或是函数的执行结果。

PostgreSQL 在 16.3、15.7 和 14.12 中修正了这一问题,但这仅限于新安装的情况。对于已经安装好的正在运行的数据库,管理员还必须重建这两个系统视图以收紧权限(加入了 WITH (security_barrier) 以及 WHERE 子句来限制访问)。修正脚本位于源代码的 src/backend/catalog/fix-CVE-2024-4317.sql (对于 FreeBSD pkg 用户,这些修正脚本会安装到 /usr/local/share/postgresql/fix-CVE-2024-4317.sql),使用 psql 运行即可。

阅读全文… ( 本文约 429 字,阅读大致需要 1 分钟 )

修复 MySQL 编码问题

• Cheatsheets

有个疑似 OCD 患者最近抽风升级了一下 MySQL 数据库,然后发现 blog 里面全都变成了乱码。

那乱码的模式一看就是把 utf8 直接扔进了 latin1 的数据库,一看 SHOW CREATE TABLE mt_entry 发现果然如此。

阅读全文… ( 本文约 265 字,阅读大致需要 1 分钟 )

关系代数中的除

• Development

简单记一笔,感谢 Stanford 的 数据库入门 课程课后作业 (有人在 StackOverflow提问)。复习一下。

应用场景:找出一家能制作全部30岁以上人士需要的Pizza种类的Pizza店。

在示范数据库中给出的四个关系:

阅读全文… ( 本文约 401 字,阅读大致需要 1 分钟 )

如何:转换旧式编码的MySQL数据库到UTF-8

• Data Management

最近帮公司的一个客户做了一个数据库迁移,客户声称数据是 utf-8 的,然而在使用过程中出现了许多乱码,检查发现数据并非 utf-8,而是 utf-8 编码之后的 big5,而排序方式更是混乱不堪的默认的utf8-swedian-ci。

MySQL的国际化支持很差。MySQL从 4.1 版本开始大刀阔斧地进行了不兼容的改动,简单地说,这些改动让相当多的操作默认以UTF-8进行,然而这会给旧的应用程序带来很多问题。许多文献推荐使用 SET CHARACTER SET 作为 workaround,尽管这能够解决一些问题,但这种做法本质上会导致 MySQL 进行额外的转换,因此并不是十分理想。

阅读全文… ( 本文约 831 字,阅读大致需要 2 分钟 )

BerkeleyDB使用中的cache同步问题

• Development

今天被一个程序折腾了很久。大致的流程是这样:

事件处理:

  • 打开db文件,如果已经打开,直接使用该handle
  • 获得排他锁,并读某一key对应的value
  • 根据value和一些环境信息以及事件所附带的输入计算新的value
  • 更新value,并同步文件、释放排他锁

锁的机制没有大毛病,可是数据死活不对。

阅读全文… ( 本文约 166 字,阅读大致需要 1 分钟 )

Access's inablities

• Development

I don’t use Access for serious applications, and the biggest problem with it is performance concerns. It does not support concurrent accesses, and hence we will have a big trouble if our server is heavily loaded.

阅读全文… ( 本文约 101 字,阅读大致需要 1 分钟 )

ACM policy poll

• Life

I’ve voted “Strongly agree”. The policy is going to change as described:

阅读全文… ( 本文约 614 字,阅读大致需要 2 分钟 )