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