获取系统当前时间,并进行加减。

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%';

(持续更新)

标签: Database, MySQL

添加新评论