MySQL自动设置create_time和update_time(以及修改时区)

1自动设置时间

我们在进行数据的插入或者修改的时候经常会用到插入时间和修改时间,那么有没有一种方法是让数据库给我们做了,答案是有的。这里只展现其中的一种方法。

这里采用的方法就是采用触发器在插入表数据或者修改表数据的时候触发。

1.1插入时的触发器

 
  1. DELIMITER $$
  2. CREATE TRIGGER user_insert_trigger
  3. BEFORE INSERT
  4. ON user
  5. FOR EACH ROW
  6. BEGIN
  7. SET NEW.create_time = NOW();
  8. SET NEW.update_time = NOW();
  9. END$$
  10. DELIMITER ;
 

 

1.2修改时的触发器

 
  1. DELIMITER $$
  2. CREATE TRIGGER user_update_trigger
  3. BEFORE UPDATE
  4. ON user
  5. FOR EACH ROW
  6. BEGIN
  7. SET NEW.update_time = NOW();
  8. END$$
  9. DELIMITER ;
 

2.设置时区(docker里面的mysql)

我们在执行了这些操作之后,发现确实插入和修改的时候有时间了,但是有时候会发现,怎么时间不对,少了8个小时或者多了,这个就是时区的问题了,下面有几种办法解决时区的问题。

2.1(进入MySQL后)直接输入命令

set global time_zone = ‘+8:00’

但是容器重启后就会失效,所以下面这种方法就是永久修改。

2.2修改配置文件

1.进入容器内部

docker exec -it mysql /bin/bash

2.找到配置文件修改

有的人的在 /etc/mysql/my.cnf,发现找不到这个文件可能也在/etc/my.cnf

输入vim命令编辑命令。

添加下面一条或者修改为

default-time_zone='+08:00'

MySQL问题:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

1、问题描述

修改mysql密码时,如果密码设置的太简单的话,会提示报错:

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

image-20230225134329765

2、出现原因

  • mysql安装了validate_password密码校验插件,导致要修改的密码不符合密码策略的要求。

2.1 查看当前的密码策略

image-20230225134832883

  • 策略说明
mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password_check_user_name    | OFF    |	决定是否使用该插件(及强制/永久强制使用):ON/OFF/FORCE/FORCE_PLUS_PERMANENT
| validate_password_dictionary_file    |        |	插件用于验证密码强度的字典文件路径
| validate_password_length             | 8      |	密码最小长度
| validate_password_mixed_case_count   | 1      |	密码至少要包含的小写字母个数和大写字母个数
| validate_password_number_count       | 1      |	密码至少要包含的数字个数
| validate_password_policy             | MEDIUM |	密码强度检查等级,0/LOW、1/MEDIUM、2/STRONG
| validate_password_special_char_count | 1      |	密码至少要包含的特殊字符数
+--------------------------------------+--------+
7 rows in set (0.02 sec)
													0/LOW:只检查长度。
                                                    1/MEDIUM:检查长度、数字、大小写、特殊字符。
                                                    2/STRONG:检查长度、数字、大小写、特殊字符字典文件。

3、可用的解决方案

思路:

1、遵从策略

2、修改策略

3、策略失效

3.1 按照要求输入上述要求的密码

如输入的密码为:Wxq3012@

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Wxq3012@';
Query OK, 0 rows affected (0.00 sec)

image-20230225135101086

3.2 更改策略:修改全局变量(临时性)

  • 修改全局变量,但重启mysql后会失效
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)
  • 在设置密码为 12345678,成功
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '12345678';
Query OK, 0 rows affected (0.00 sec)
  • 查看密码策略
mysql> SHOW VARIABLES LIKE 'validate_password%';

image-20230225140956808

3.2.1 重启mysql后失效

  • 重启mysql
[root@localhost ~]# systemctl restart mysqld
  • 查看密码策略,可见策略已恢复
mysql> SHOW VARIABLES LIKE 'validate_password%';

image-20230225141404988

3.3 更改策略:在my.cnf文件添加参数

my.cnf文件在所在目录:/etc/my.cnf

  • 在my.cnf文件添加参数
[root@localhost ~]# vim /etc/my.cnf

...
...
validate_password_policy=0

image-20230225142205144

  • 重启mysql使参数生效
[root@localhost ~]# systemctl restart mysqld
  • 查看密码策略,可见策略已更改
mysql> SHOW VARIABLES LIKE 'validate_password%';

image-20230225142415507

3.4 禁用插件

  • 在my.cnf文件添加参数,禁用validate_password密码校验插件
[root@localhost ~]# vim /etc/my.cnf

...
...
validate-password=OFF

image-20230225142700552

  • 重启mysql使参数生效
[root@localhost ~]# systemctl restart mysqld
  • 查看密码策略,可见策略已更改
mysql> SHOW VARIABLES LIKE 'validate_password%';

image-20230225142415507

3.5 删除插件

  • 删除插件
mysql> uninstall plugin validate_password;

image-20230225143224812

 

posted @ 2024-01-02 16:58  CharyGao  阅读(114)  评论(0编辑  收藏  举报