MySQL运维备忘录
获取系统当前时间,并进行加减。
DATE_ADD(NOW(),INTERVAL -5 SECOND)获取最大值记录
MAX(expr)
SELECT MAX(字段名) as 字段名 FROM 表名;
#从表中选择特定字段中最大值的那条记录设置max_allowed_packet
#在my.cnf中设置
[mysqld]
max_allowed_packet = 1099511627776
#1099511627776=1024MB
max_allowed_packet = 1024M
#也可以直接使用M作为单位
#使用命令修改参数:
mysql>set global max_allowed_packet = 1024*1024*160;
#可导入的sql文件大小设置为160MB
#1024*1024*1024=1024MB
SHOW VARIABLES LIKE "%max_allowed_packet%"
查看当前max_allowed_packet值设置MySQL超时
#在my.cnf中设置:
[mysqld]
net_write_timeout=28800
#导入较大sql文件时,如果此项时间为默认值60s,容易出现链接中断的情况。
net_read_timeout=28800
wait_timeout=28800
interactive_timeout=28800
#wait_timeout和interactive_timeout默认值都为28800。
#实际生效的是interactive_timeout只修改wait_timeout是不生效的。
connect_timeout=28800
#使用命令修改参数:
mysql>set global interactive_timeout=28800;
mysql>set global net_write_timeout=28800;
mysql>set global net_read_timeout=28800;
mysql>set global connect_timeout=28800;
SHOW VARIABLES LIKE "%timeout%"
#查看MySQL超时变量读取时间戳用于增量更新
SELECT * FROM 库名.表名 WHERE updated_at > (SELECT sync_time FROM 库名.表名 WHERE id = '1');跳过mysql密码直接登录
方法一:
vim /etc/my.cnf
[mysqld_safe]
mysqld_safe --skip-grant-tables
#重启数据库
#可以用在忘记密码。
#mariadb安装后不知道默认密码,使用此方法重设root密码。方法二:
先停止mysql服务
然后执行:
mysqld --console --skip-grant-tables --shared-memory
登陆后修改密码设置mysql的时区(临时)
1.查看当前的时区、时间
#查看时区
show variables like '%time_zone%';
#查看时间
select now();2.设置新时区
#中国的时间为+8:00
set time_zone='+8:00';3.再次查看时区
show variables like '%time_zone%';返回结果如下:
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | UTC |
| time_zone | +08:00 |
+------------------+--------+
2 rows in set (0.00 sec)
#时区设置成功设置mysql的时区(永久)
修改/etc/my.cnf配置文件
[mysqld]
default_time_zone = '+8:00'重启mysql服务
mysql大小写宽松设置
[mysqld]
lower_case_table_names=1
#大小写不区分
#然后重启mysql服务允许时间为null
导入sql时出现报错:[ERR] 1067 - Invalid default value for 'CREATED_AT'
#mysql 5.7
[mysqld]
sql_mode="ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
#mysql 8.0
[mysqld]
sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'设置mysql数据库默认字符集
[mysqld]
character_set_server=utf8mb4
collation_server=utf8mb4_general_ci验证方法:
show variables like "%character%";show variables like "%collation%";将mysql设置为维护模式
以禁止新用户的连接,防止数据被库被更改
#开启维护模式
set global offline_mode=1;
#关闭维护模式
set global offline_mode=0;SQL_MODE 严格模式
在这个模式下,如果插入或更新的数据不符合表的约束(如类型、长度等),MySQL 会抛出错误,而不是默默地调整数据。这确保了数据的完整性。
sql_mode = STRICT_TRANS_TABLES
#若不使用严格模式,则删除此参数。查看当前sql_mode
show variables like '%sql_mode%';(持续更新)