Skip to content

QA

docker 升级

系统采用docker方式部署,备份原有数据映射目录(没做映射可以docker cp),小版本直接直接拉取新镜像run,注意容器配置和之前保持一致,注意观察日志,日志提示升级完成启动即可正常使用;

update && delete 不带where

sql
set sql_safe_updates = 1;
sql
SHOW VARIABLES LIKE 'sql_safe_updates';
SELECT @@sql_safe_updates;

如果设置了sql_safe_updates = 1

  • update语句必须满足如下条件之一才能执行成功
    • 使用where子句,并且where子句中列必须为prefix索引列
    • 使用limit
    • 同时使用where子句和limit(此时where子句中列可以不是索引列)
  • delete语句必须满足如下条件之一才能执行成功
    • 使用where子句,并且where子句中列必须为prefix索引列
    • 同时使用where子句和limit(此时where子句中列可以不是索引列)

莫名的update

  1. 开启日志
sql
SET GLOBAL general_log = 'ON';
SET GLOBAL log_output = 'TABLE';  -- 或者设置为 'FILE',具体看你的需求
  1. 查询table or file
sql
-- 查询那个ip更新的,定位具体服务ip,win用openark,linux用ps
SELECT * FROM mysql.general_log WHERE user_host LIKE '%client_ip%';
  1. 恢复现场
sql
TRUNCATE TABLE mysql.general_log;
SET GLOBAL general_log = 'OFF';

show variables like '%general_log%'

账号

shell
-- 创建只读用户
CREATE USER 'readonly_user'@'%' IDENTIFIED BY 'readonly_password';

-- 授予只读权限(SELECT 权限)给该用户
GRANT SELECT ON `test`.* TO 'readonly_user'@'%';

-- 刷新权限
FLUSH PRIVILEGES;