使用mysql5.7版本数据库需要注意的地方/持续更新
数据库mysql 5.7版本的初始密码修改
安装完后实在是找不到初始密码的文件,后面发现再错误日志中
先关闭mysql
pkill mysqld
安全模式启动数据库并修改密码
mysqld_safe --skip-grant-tables &
MySQL [mysql]> update user set password=password('xxxx') where user='root';
ERROR 1054 (42S22): Unknown column 'password' in 'field list'
MySQL [mysql]> update user set authentication_string=password('xxxx') where user='root';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 1
MySQL [mysql]> flush privileges;
Query OK, 0 rows affected (0.01 sec)
5.7版本中保存密码的字段password
改为authentication_string
使用密码进入数据库
[root@VM_47_236_centos ~]# pkill mysqld
[root@VM_47_236_centos ~]# mysqld_safe --defaults-file=/etc/my.cnf &
[1] 27918
[root@VM_47_236_centos ~]# 2018-01-22T02:02:49.499702Z mysqld_safe Logging to '/data/mysql/mysql-error.log'.
2018-01-22T02:02:49.518163Z mysqld_safe Starting mysqld daemon with databases from /data/my
MySQL [(none)]> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
MySQL [(none)]> alter user root@'localhost' identified by 'xxxx';
Query OK, 0 rows affected (0.01 sec)
这是可以使用密码进入数据库,但是还需要alter user...重新鉴定一下
关闭ONLY_FULL_GROUP_BY
select @@global.sql_mode\G;
*************************** 1. row ***************************
@@global.sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
1 row in set (0.00 sec)
ERROR:
No query specified
MySQL [(none)]> set @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
Query OK, 0 rows affected (0.00 sec)
MySQL [(none)]> select @@global.sql_mode\G;
*************************** 1. row ***************************
@@global.sql_mode: STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
1 row in set (0.00 sec)
sql_mode值的含义:
ONLY_FULL_GROUP_BY:
对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么将认为这个SQL是不合法的,因为列不在GROUP BY从句中
STRICT_TRANS_TABLES:
在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做任何限制
NO_ZERO_IN_DATE:
在严格模式,不接受月或日部分为0的日期。如果使用IGNORE选项,我们为类似的日期插入'0000-00-00'。在非严格模式,可以接受该日期,但会生成警告。
NO_ZERO_DATE:
在严格模式,不要将 '0000-00-00'做为合法日期。你仍然可以用IGNORE选项插入零日期。在非严格模式,可以接受该日期,但会生成警告
ERROR_FOR_DIVISION_BY_ZERO:
在严格模式,在INSERT或UPDATE过程中,如果被零除(或MOD(X,0)),则产生错误(否则为警告)。如果未给出该模式,被零除时MySQL返回NULL。如果用到INSERT IGNORE或UPDATE IGNORE中,MySQL生成被零除警告,但操作结果为NULL。
NO_AUTO_CREATE_USER
防止GRANT自动创建新用户,除非还指定了密码。
NO_ENGINE_SUBSTITUTION:
如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常
系统时间问题
5.7默认为UTC时间,所以查看日志的时候时间是对不上的,时差8H
查看当前mysql时区
MySQL [(none)]> SHOW GLOBAL VARIABLES LIKE 'log_timestamps';
+----------------+--------+
| Variable_name | Value |
+----------------+--------+
| log_timestamps | UTC |
+----------------+--------+
1 row in set (0.01 sec)
需要在mysql的配置文件中[mysqld]中增加一条log_timestamps
的配置
log_timestamps=SYSTEM
MySQL [(none)]> SHOW GLOBAL VARIABLES LIKE 'log_timestamps';
+----------------+--------+
| Variable_name | Value |
+----------------+--------+
| log_timestamps | SYSTEM |
+----------------+--------+
1 row in set (0.01 sec)
bin_log日志的管理
日志文件过大,查看的时候会很好性能,所以建议可以设定一个阈值,到达阈值轮替,并且设置保存时间
配置文件[mysqld]中添加如下:
log_bin = mysql-bin
binlog_format = mixed
expire_logs_days = 7
max_binlog_size = 20M
保存7天,日志文件最大为20M
MySQL5.7中NULL和空值0的计算区别
公司业务上遇到相关问题,SQL语句如下:
MySQL [tw2]> SELECT * FROM tw_member
WHERE hid
!="";
+---------+--------------+---------+-----+-------+----------+----------------------------------+-------+-------------+-------------+-------------+--------+-----------+-----------------+-----------+-------------+---------+------------+
| id | nickname | headimg | hid | level | username | password | email | mobile | update_time | create_time | status | leader_id | is_share_member | is_inside | platform_id | role_id | examine_id |
+---------+--------------+---------+-----+-------+----------+----------------------------------+-------+-------------+-------------+-------------+--------+-----------+-----------------+-----------+-------------+---------+------------+
| 1148961 | 曾亚瑞 | NULL | 38 | 2 | z323555 | 00d92e9294d484574d50863b4d547c5c | | 15087149162 | 1524711596 | 1524707736 | -1 | 1 | 0 | 1 | 999 | 2 | 0 |
| 1148962 | 第三方 | NULL | 999 | 0 | sdf55 | 00d92e9294d484574d50863b4d547c5c | | 13072766592 | 1524736018 | 1524710328 | 1 | 1 | 0 | 1 | 999 | 0 | 0 |
| 1148963 | 萨芬 | NULL | 38 | 9 | dsfa545 | 00d92e9294d484574d50863b4d547c5c | | 13772766591 | 0 | 1524710356 | 1 | 1 | 0 | 1 | 999 | 20 | 0 |
| 1148965 | 撒旦法 | NULL | 38 | 9 | fsdf55 | 00d92e9294d484574d50863b4d547c5c | | 13995913628 | 0 | 1524712960 | 1 | 1148961 | 0 | 1 | 999 | 22 | 0 |
| 1148966 | 随碟附送 | NULL | 38 | 2 | sdf5454 | 00d92e9294d484574d50863b4d547c5c | | 13995951362 | 1524793149 | 1524713664 | 1 | 1 | 0 | 1 | 999 | 1 | 0 |
+---------+--------------+---------+-----+-------+----------+----------------------------------+-------+-------------+-------------+-------------+--------+-----------+-----------------+-----------+-------------+---------+------------+
5 rows in set (0.00 sec)
MySQL [tw2]> SELECT * FROM tw_member
WHERE hid
is not NULL;
+---------+--------------+---------+-----+-------+----------+----------------------------------+------------------+-------------+-------------+-------------+--------+-----------+-----------------+-----------+-------------+---------+------------+
| id | nickname | headimg | hid | level | username | password | email | mobile | update_time | create_time | status | leader_id | is_share_member | is_inside | platform_id | role_id | examine_id |
+---------+--------------+---------+-----+-------+----------+----------------------------------+------------------+-------------+-------------+-------------+--------+-----------+-----------------+-----------+-------------+---------+------------+
| 1 | admin | 43 | 0 | 1 | admin | 13a7669e31f85e25a6047a3a98b66375 | 190423457@qq.com | 18555550710 | 1524793653 | 1513216128 | 1 | 0 | 0 | 1 | 999 | 0 | 0 |
| 1148961 | 曾亚瑞 | NULL | 38 | 2 | z323555 | 00d92e9294d484574d50863b4d547c5c | | 15087149162 | 1524711596 | 1524707736 | -1 | 1 | 0 | 1 | 999 | 2 | 0 |
| 1148962 | 第三方 | NULL | 999 | 0 | sdf55 | 00d92e9294d484574d50863b4d547c5c | | 13072766592 | 1524736018 | 1524710328 | 1 | 1 | 0 | 1 | 999 | 0 | 0 |
| 1148963 | 萨芬 | NULL | 38 | 9 | dsfa545 | 00d92e9294d484574d50863b4d547c5c | | 13772766591 | 0 | 1524710356 | 1 | 1 | 0 | 1 | 999 | 20 | 0 |
| 1148964 | 撒旦法 | NULL | 0 | 9 | sdf66 | 00d92e9294d484574d50863b4d547c5c | | 13372766591 | 1524734787 | 1524710438 | -2 | 1 | 0 | 1 | 999 | 0 | 0 |
| 1148965 | 撒旦法 | NULL | 38 | 9 | fsdf55 | 00d92e9294d484574d50863b4d547c5c | | 13995913628 | 0 | 1524712960 | 1 | 1148961 | 0 | 1 | 999 | 22 | 0 |
| 1148966 | 随碟附送 | NULL | 38 | 2 | sdf5454 | 00d92e9294d484574d50863b4d547c5c | | 13995951362 | 1524793149 | 1524713664 | 1 | 1 | 0 | 1 | 999 | 1 | 0 |
+---------+--------------+---------+-----+-------+----------+----------------------------------+------------------+-------------+-------------+-------------+--------+-----------+-----------------+-----------+-------------+---------+------------+
7 rows in set (0.00 sec)
MySQL [tw2]> SELECT * FROM tw_member
WHERE hid
="";
+---------+-----------+---------+-----+-------+----------+----------------------------------+------------------+-------------+-------------+-------------+--------+-----------+-----------------+-----------+-------------+---------+------------+
| id | nickname | headimg | hid | level | username | password | email | mobile | update_time | create_time | status | leader_id | is_share_member | is_inside | platform_id | role_id | examine_id |
+---------+-----------+---------+-----+-------+----------+----------------------------------+------------------+-------------+-------------+-------------+--------+-----------+-----------------+-----------+-------------+---------+------------+
| 1 | admin | 43 | 0 | 1 | admin | 13a7669e31f85e25a6047a3a98b66375 | 190423457@qq.com | 18555550710 | 1524793653 | 1513216128 | 1 | 0 | 0 | 1 | 999 | 0 | 0 |
| 1148964 | 撒旦法 | NULL | 0 | 9 | sdf66 | 00d92e9294d484574d50863b4d547c5c | | 13372766591 | 1524734787 | 1524710438 | -2 | 1 | 0 | 1 | 999 | 0 | 0 |
+---------+-----------+---------+-----+-------+----------+----------------------------------+------------------+-------------+-------------+-------------+--------+-----------+-----------------+-----------+-------------+---------+------------+
2 rows in set (0.00 sec)
MySQL [tw2]> SELECT * FROM tw_member
WHERE hid
is NULL;
Empty set (0.00 sec)
总结一下:
- NULL是占用数据空间的,但是空值‘’是不占用的(据说,未实测)
- NULL不能参与计算,空值可以;NULL只能用
is null
参与筛选 数据类型如果是字符串型,不是int型,筛选无影响
SELECT /!40001 SQL_NO_CACHE / * FROM ...
在MySQL慢查询日志中出现
SELECT /*!40001 SQL_NO_CACHE */ * FROM
语句
对应的应用场景是在备份数据库mysqldump
命令
/* .... / 在大部分语言中都一样是注释。这个之中的语句是不被执行的。但MYSQL中 为了保持兼容,比如从mysqldump 导出的SQL语句能被其它数据库直接使用,它把一些特有的仅在MYSQL上的语句放在 /! ... / 中,这样这些语句如果在其它数据库中是不会被执行,但在MYSQL中它会执行。
MySQL对标准SQL的扩展MySQL服务器包含一些其他SQL DBMS中不具备的扩展。注意,如果使用了它们,将无法把代码移植到其他SQL服务器。在某些情况下,你可以编写包含MySQL扩展的代码,但仍保持其可移植性,方法是用“/... /”注释掉这些扩展。在本例中,MySQL服务器能够解析并执行注释中的代码,就像对待其他MySQL语句一样,但其他SQL服务器将忽略这些扩展。例如: SELECT /! STRAIGHT_JOIN / col_name FROM table1,table2 WHERE ...如果在字符“!”后添加了版本号,仅当MySQL的版本等于或高于指定的版本号时才会执行注释中的语法: CREATE /!32302 TEMPORARY */ TABLE t (a INT);这意味着,如果你的版本号为3.23.02或更高,MySQL服务器将使用TEMPORARY关键字。
group_concat_max_len
GROUP_CONCAT函数用于将多个字符串连接成一个字符串,在拼接成字符串时就会存在拼接长度的问题,mysql 默认的拼接最大长度为1024 个字节,由于1024个字节会出现不够用的情况,所以有时需要去根据情况进行修改
动态修改参数
show variables like 'group_concat_max_len';
SET GLOBAL group_concat_max_len = 102400;
SET SESSION group_concat_max_len = 102400;
有时我们并不知需要多大的字节才能满足需求,此种情况可以考虑不设置最大字节(即采用最大字节数)即在配置文件设置group_concat_max_len=-1
使用mysql5.7版本数据库需要注意的地方/持续更新的更多相关文章
- RDS的tar文件恢复到本地mysql5.7版本数据库
参考博客: 安装qpress软件 https://blog.csdn.net/a18838964650/article/details/82800621 文章介绍补充 https://www.cnbl ...
- thinkphp连接mysql5.5版本数据库
//数据库配置信息 'DB_TYPE' => 'mysqli', // 数据库类型 'DB_HOST' => 'localhost', // 服务器地址 'DB_NAME' => ' ...
- RDS的xb文件恢复到本地mysql5.6版本数据库
参考博客: https://blog.csdn.net/a18838964650/article/details/82800621 安装qpress软件 https://www.cnblogs.co ...
- python自动化测试之mysql5.0版本数据库查询数据时出现乱码问题分析
1.确保数据库编码是utf8编码.若不是,请将my.ini的client,mysql,mysqld三个字段下面添加default-character-set = utf8,这样可以永久改变在新建数据库 ...
- mysql5.6版本数据库向Mysql5.7版本的数据库更新数据
timestamp 类型不允许 timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', 创建表的是后会报异常,解决方法是: 在my.cnf文件里面假如: s ...
- 【我的Android进阶之旅】Realm数据库学习资料汇总(持续更新)
介绍 realm是一个跨平台移动数据库引擎,支持iOS.OS X(Objective-C和Swift)以及Android. 2014年7月发布.由YCombinator孵化的创业团队历时几年打造,是第 ...
- Oracle 9i & 10g编程艺术-深入数据库体系结构-学习笔记(持续更新中)
--20170322 --1.0 --更新表的统计信息begin dbms_stats.set_table_stats(user,'EMP',numrows => 10000);end; beg ...
- 使用mysql5.7版本的mysqldump备份mysql8.0版本的数据库报错解决办法
使用mysql5.7版本的mysqldump命令执行备份mysql8.0版本的数据库时会报错: mysqldump: Couldn't execute 'SET SQL_QUOTE_SHOW_CREA ...
- Linux CentOS6环境下MySQL5.1升级至MySQL5.5版本过程
转载地址:http://www.laozuo.org/6145.html 老左今天有在帮朋友的博客搬迁到另外一台VPS主机环境,其环境采用的是LLSMP架构的,原先的服务器采用的是LNMP网站环境,其 ...
随机推荐
- keras 自定义 custom 函数
转自: https://kexue.fm/archives/4493/,感谢分享! Keras是一个搭积木式的深度学习框架,用它可以很方便且直观地搭建一些常见的深度学习模型.在tensorflow出来 ...
- c++类模板成员函数报错
类模板成员函数要不就在类模板中实现,要不就和类模板写在同一个文件中. 否则然会出现下面错误: >main.obj : error LNK2019: 无法解析的外部符号 "public: ...
- 浅谈SQL Server中的事务日志(五)----日志在高可用和灾难恢复中的作用
简介 日志的作用是保证持久性和数据一致性,通过日志可以实现数据的Undo与Redo,因此通过日志,SQL Server不仅仅可以实现灾难恢复,还可以通过日志的Redo来实现高可用性.本篇文章主要讲述日 ...
- JSTL格式化标签库
导入标签库需要使用taglib指令! <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/forma ...
- java面试题之 -----面向切面编程
这种在运行时,动态地将代码切入到类的指定方法.指定位置上的编程思想就是面向切面的编程. 面向切面编程(AOP是Aspect Oriented Program的首字母缩写) ,我们知道,面向对象的特点是 ...
- Vue项目中引入ElementUI
前提:创建好的vue项目. 1.安装ElementUI 转到项目根目录,输入命令:#cnpm install element-ui --save-dev 2.在 main.js 引入并注册 impor ...
- 增加C盘空间大小
随着我们使用电脑的时间越来越久,电脑C盘的空间会出现不够用的情况,这时我们需要的就是增加C盘的大小,基本上有两种方式 1.通过系统自带的磁盘管理(有可能没法操作,主要介绍第二种) 2.通过分区软件进行 ...
- C/C++ 修改控制台程序文字颜色
可以修改前景色(字体颜色)和背景色. 示例代码如下: #include <iostream> #include <Windows.h> //需要引用Windows.h usin ...
- CRUD全栈式编程架构之服务层的设计
服务层代码 首先我先放出2个主要类的代码再分别讲解 接口 using System; using System.Collections.Generic; using System.Linq; usin ...
- 从数据流角度管窥 Moya 的实现(一):构建请求
相信大家都封装过网络层. 虽然系统提供的网络库以及一些著名的第三方网络库(AFNetworking, Alamofire)已经能满足各种 HTTP/HTTPS的网络请求,但直接在代码里用起来,终归是比 ...