使用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网站环境,其 ...
随机推荐
- Siebel界面的搭建
Siebel界面的初步搭建都是基于Siebel Tools工具来创建的,其搭建步骤: 1. 首先先创建一个Project项目,点击project--->点 new Record--->输入 ...
- 使用本地计划任务定时关闭azure虚拟机
本文包含以下内容 前提条件 如何实现定时关闭虚拟机 前提条件 Controller 机器上必须安装 Azure PowerShell,并且要在 PowerShell 里登录一次 Azure, 请参见: ...
- 【邀请函】小投入 大产出—微软智能云(Azure)之CDN 专题
会议时间 2016 年 11 月 24 日 14:00-16:00 会议介绍 尊敬的客户: 您是否还在为如何提高网站的响应速度以及用户增长造成的源站压力烦恼?是否还在担心源站 IP 暴露存在安全隐患? ...
- SQL Server 2012安装配置(Part2 )
2 服务器安装 运行安装程序后,首先进入 SQL Server 安装中心.选择左侧导航树中的"安装"菜单项. 图2-1 SQL Server 安装中心 在右侧菜单中点击" ...
- 【Leetcode】【Easy】Remove Element
Given an array and a value, remove all instances of that value in place and return the new length. T ...
- 通过vue-cli3构建一个SSR应用程序
1.前沿 1.1.什么是SSR SSR(服务端渲染)顾名思义就是将页面在服务端渲染完成后在客户端直接展示. 1.2.客户端渲染与服务端渲染的区别 传统的SPA模式 即客户端渲染的模式 Vue.js构建 ...
- 1.LVS理论基础
查看我的有道云笔记: http://note.youdao.com/noteshare?id=68e0ca45757943e482ba390d4d49369f&sub=4A2A593CDE2D ...
- jsp页面传输到xxAction.java乱码解决
jsp页面传输到xxAction.java乱码解决:jsp:encodeURI(encodeURI("xx"))java:if(!StringUtils.isBlank(belon ...
- Twitter Typeahead plugin Example
原文网址: http://dhtmlexamples.com/2012/02/27/using-the-typeahead-plugin-with-twitter-bootstrap-2-and-jq ...
- Angular 引用库
<!doctype html> <html ng-app> <head> <script src="http://code.angularjs.or ...