![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MySQL
MySQL
Sam.Shi
这个作者很懒,什么都没留下…
展开
-
解决mysql数据库因过多错误链接导致拒绝访问的问题
程序无法连接MySQL,提示: null, message from server: “Host ‘192.168.1.235’ is blocked because of many connection errors; unblock with ‘mysqladmin flush-hosts’” 我用的mysql版本是5.7的,进入命令行运行flush hosts命令就可以解决问题,但关键还是要分原创 2017-05-09 15:18:33 · 4288 阅读 · 0 评论 -
MySQL中如何判断表是否存在
判断表是否存在的方法有很多,但是我觉得下面这种方法最实用:select COUNT(1) as count from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA='dataterminaldb2' and TABLE_NAME='monitorcompanyevent3';主要是用在动态创建表的时候需要判断表是否存在。原创 2017-03-22 17:42:31 · 6049 阅读 · 0 评论 -
mysql出现Unknown or incorrect time zone: ‘NULL‘
使用navicat导入数据时发生错误。 原因:时区设置错误。 查看方法:show variables like '%time_zone%'; 结果: 发现系统时区为空。设置时区: 修改my.cnf文件(windows中是my.ini文件) 一定要加在 [mysqld] 下面,否则会出现 unknown variable ‘default-time-zone=+8:00’default-ti原创 2015-07-28 11:45:25 · 8105 阅读 · 1 评论 -
MySQL各存储引擎简介
MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。查看mysql中已有的存储引擎mysql> show engines;查看数据库当前使用的存储引擎mysql>show variables like '%storag原创 2017-07-13 12:57:05 · 424 阅读 · 0 评论 -
通过建立索引优化MySQL查询速度
公司使用的业务数据库是MySQL,随着公司业务的发展,某些表中的数据变得越来越大,当单表数据量超过几十万后,查询速度明显变慢,导致用户体验下降。因此,提升数据库查询速度迫在眉睫,下面我们来看下如何通过建立索引提升MySQL的查询速度。一,什么是索引 索引是用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所原创 2017-01-19 10:59:31 · 4344 阅读 · 0 评论 -
MySQL数据库表如何水平拆分和垂直拆分
目前很多互联网系统都存在单表数据量过大的问题,这就降低了查询速度,影响了客户体验。为了提高查询速度,我们可以优化sql语句,优化表结构和索引,不过对那些百万级千万级的数据库表,即便是优化过后,查询速度还是满足不了要求。这时候我们就可以通过分表降低单次查询数据量,从而提高查询速度,一般分表的方式有两种:水平拆分和垂直拆分,两者各有利弊,适用于不同的情况。水平拆分 水平拆分是指数据表行的拆分,表的行数原创 2017-03-02 18:07:19 · 17861 阅读 · 0 评论 -
MySQL中date、year、datetime、timestamp和time数据类型的区别
MySQL 日期类型:日期格式、所占存储空间、日期范围 比较。 日期类型 存储空间 日期格式 日期范围datetime 8 bytes YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 timestamp 4 bytes YYYY-MM-DD HH:MM:SS 1970-01-01 00:00:01 ~ 2038 d原创 2015-10-07 22:00:36 · 5703 阅读 · 0 评论 -
使用systemctl命令启动和关闭mysql
以前都用service命令管理mysql,现在liunx系统升级了,又有了新的更好的方法管理系统进程,现在我们来学习如何用systemctl命令管理mysql。Systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器。 Systemd是一个系统管理守护进程、工具和库的集合,用于取代System V初始进程。Systemd的功能是用于集中管理和配置类UNIX系统。 在原创 2017-05-23 10:13:35 · 44537 阅读 · 2 评论 -
mysql中创建唯一约束防止数据重复
针对数据重复插入的情况,我们通常会在业务代码中进行处理,就是说入库的时候先查一遍有没有,没有记录的情况再准许入库。但是如果只是自己处理业务代码时先查后入库,并发高时会发生意想不到的后果。比如现在表tab里有两个字段fa, fb。业务规定,fa和fb的值只能成对出现一次(好比1,2入库一次,就不能再有一条1,2的记录入库)。当在自己的业务代码里处理避免再次入库时,会这样处理,步骤一:select 1原创 2017-03-16 17:04:23 · 9429 阅读 · 0 评论 -
修改mysql中自增长列的起始值
如果一个表的主键是自增长的,那么当表中的数据被清空后,我们希望之后数据的id又可以从1开始,那么我们要修改自增长列的初始值,方法如下:alter table table_name AUTO_INCREMENT = 0;原创 2017-03-22 13:51:54 · 8069 阅读 · 0 评论 -
查看MySQL中数据表的数据量
在MySQL中有个库叫information_schema,里面有数据库基本信息的数据字典表,可以通过查询tables表来获得所需要的表相关信息。SELECT * from `TABLES` ;当我们需要分析数据表中的数据量的时候,可以用如下sqlselect table_name,table_rows from tables where TABLE_SCHEMA = 'dataterminaldb原创 2017-01-20 14:10:53 · 11999 阅读 · 1 评论 -
mysql中使用REPLACE函数替换字段中部分字符
REPLACE(str,from_str,to_str) 在字符串 str 中所有出现的字符串 from_str 均被 to_str替换,然后返回这个字符串。这个函数用来批量替换数据中的非法关键字是很有用的。例如将公司名称中的英文挎号替换为中文挎号:UPDATE paycompanypayment t set t.CompanyName=REPLACE(t.CompanyName, '(', '原创 2016-09-28 13:46:13 · 6292 阅读 · 0 评论 -
在linux中使用命令修改MySQL用户的权限
一般设置mysql用户权限我们可以在客户端中操作,很方便,不过有时候为了提升数据库安全,会限制远程给用户授权,这时候我们就需要登录到服务器上面设置用户权限。例如在linux上配置用户权限,如下 1,先登录,mysql -uroot -p 2,再设置 MySQL赋予用户权限命令的简单格式可概括为: grant 权限 on 数据库对象 to 用户 grant select on dataterm原创 2017-04-24 18:01:05 · 10211 阅读 · 1 评论 -
MySQL5.7如何重置root密码
从5.7开始user表中已经没有password字段,而是将加密后的用户密码存储authentication_string字段;select password(‘123456’); 查看加密后的编码,*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9然后更新authentication_string字段update mysql.user set authentica原创 2016-12-31 23:43:32 · 670 阅读 · 0 评论 -
使用命令行创建、修改及查看mysql用户和权限
1,查看当前用户情况mysql> use mysql;mysql> select host,user from mysql.user;2,新建用户mysql> create user 'ljzx'@'172.16.0.105' identified by 'LENGjing@2*8#3&7';3,赋予权限mysql> grant all on *.* to 'ljzx'@'192.168.%';原创 2017-06-29 12:18:17 · 1883 阅读 · 0 评论 -
MySQL 5.7 优化InnoDB配置
InnoDB给MySQL提供了具有提交,回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎。InnoDB锁定在行级并且也在SELECT语句提供一个Oracle风格一致的非锁定读。这些特色增加了多用户部署和性能。没有在InnoDB中扩大锁定的需要,因为在InnoDB中行级锁定适合非常小的空间。InnoDB也支持FOREIGN KEY强制。在SQL查询中,你可以自由地将InnoDB类型的表与其它MyS原创 2017-07-13 16:18:39 · 10410 阅读 · 0 评论 -
MySQL binlog日志参数简介
binlog日志是mysql的二进制日志,记录了所有的DDL(数据定义语言)语句和DML(数据操作语言)语句,但是不包括数据查询语句,语句是以“事件”的形式保存的,它描述数据更改的过程。该日志的两个主要功能是:数据的恢复与数据的复制。binlog参数 log_bin 设置此参数表示启用binlog功能,并指定路径名称log_bin_index 设置此参数是指定二进制索引文件的路径与名称binlog原创 2017-07-11 20:39:22 · 2914 阅读 · 0 评论 -
mysql数据库中修改用户密码
方法一: 登录mysql mysql -u root -p 如果没有设置软连接,可以进入mysql安装目录 ./mysql -u root -p (使用whereis mysql命令查看mysql的安装路径) 然后输入root密码进入mysqlmysql>use mysql;mysql> UPDATE user SET password=PASSWORD("new password"原创 2015-07-09 10:33:07 · 758 阅读 · 0 评论 -
mysql出现ERROR : 2006, ‘MySQL server has gone away‘
使用Navicat运行SQL文件导入数据库时出现“ MySQL server has gone away”。 原因:SQL语句过大或者语句中含有BLOB或者longblob字段,超出了默认允许最大的数据包。 解决办法:在my.cnf文件中添加以下参数(windows中是my.ini文件)wait_timeout=2880000 interactive_timeout = 2880000max原创 2015-07-27 15:36:52 · 8574 阅读 · 0 评论 -
MySQL中创建存储过程时通过DEFINER和SQL SECURITY设置访问权限
procedure与function、trigger等创建时紧接着CREATE都有个definer可选项,该definer规定了访问该procedure等的安全控制。CREATE DEFINER = `bigdata1`@`192.168.%` PROCEDURE `Test`()BEGIN ......END;上面示例指定definer为用户bigdata1@192.168.%,所以任意原创 2017-07-31 14:16:10 · 17570 阅读 · 1 评论 -
MySQL 5.7 主从配置
MySQL进行主从配置可以降低服务器压力,提高服务器的可用性。设置步骤如下: 环境: 服务器1:Centos Linux 7.3 ip: 172.16.0.102 服务器2:Centos Linux 7.3 ip: 172.16.0.104 MySQL:mysql5.7.181,配置主服务器 修改/etc下的修改my.cnf文件,在[mysqld]下面增加下面几行,然后重启MySQL数原创 2017-07-11 17:57:14 · 5192 阅读 · 0 评论 -
[Err] 1449 - The user specified as a definer (‘admin‘@‘%‘) does not exist
mysql> grant all privileges on . to admin@”%” identified by “.”;mysql> flush privileges;原创 2015-07-08 19:33:13 · 911 阅读 · 0 评论 -
查看mysql中所有的外键信息
select * from INFORMATION_SCHEMA.KEY_COLUMN_USAGE t where t.TABLE_SCHEMA = 'ljzxdbtest' and t.COLUMN_NAME = 'account_id';原创 2017-10-20 10:48:34 · 5508 阅读 · 0 评论 -
MySQL中如何用一个表中的字段更新另一个表中字段
1,修改1列update student s, city cset s.city_name = c.namewhere s.city_code = c.code;2,修改多个列update a, bset a.title=b.title, a.name=b.namewhere a.id=b.id3,采用子查询update student s set city_name = (select原创 2017-11-07 19:59:19 · 7148 阅读 · 1 评论 -
在mysql中使用group by和order by取每个分组中日期最大一行数据
在mysql中使用group by进行分组后取某一列的最大值,我们可以直接使用MAX()函数来实现,但是如果我们要取最大值对应的ID,那么我们需要取得整行的数据。最开始的实现方法如下SELECT t.event_id,MAX(t.create_time) as create_timefrom monitor_company_event t GROUP BY t.company_name,t.ro原创 2017-11-08 20:15:55 · 40114 阅读 · 27 评论 -
MySQL中使用UUID()函数生成主键
SELECT REPLACE(UUID(),'-','');运行以上代码得到结果:4b1ea801bea911e7913c1418775159ef直接使用UUID()函数得到的结果是8e9503d9-beab-11e7-913c-1418775159ef,因为含有“-”与原有的ID不一致,我们就可以使用REPLACE函数去除“-”,保持格式一致。原创 2017-11-01 10:40:24 · 11060 阅读 · 0 评论 -
MySQL中DATE_ADD()和DATE_SUB()函数
DATE_ADD(date,INTERVAL expr type),给日期添加指定的时间间隔。DATE_SUB(date,INTERVAL expr type),给日期减少指定的时间间隔。参数:date 参数是合法的日期表达式;expr 参数是您希望添加的时间间隔;type 参数的值如下:MICROSECOND:毫秒SECOND:秒MINUTE:分钟HOUR:小时DAY:天W...原创 2019-01-21 09:26:12 · 6323 阅读 · 0 评论 -
在CentOS Linux 7.3上安装MySQL5.7
MySQL非常适合用于中小型项目的数据库,在windows中安装很简单,只要根据提示一步步操作就可以了,但是推荐在linux上安装,因为装在liunx系统上更稳定,下面我们来一起安装mysql。操作系统:Centos 7.3 mysql数据库版本:mysql5.7.181,安装新版mysql之前,我们需要将系统自带的mariadb-lib卸载[root@pingtai2 ~]# rpm -qa|g原创 2017-07-07 17:17:33 · 1041 阅读 · 0 评论 -
Linux 下如何进入 MySQL 命令行
格式: mysql -h主机地址 -u用户名-p用户密码1、例1:连接到本机上的MYSQL一般可以直接键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql>2、连接到远程主机上的MySQL假设远程主机的IP为:10.0.0.1,用户名为root,密码为123。则键入以下命原创 2017-04-24 18:03:49 · 105809 阅读 · 4 评论