搜索词>>mysql 耗时0.0020
  • MySQL慢查询优化_MySQL慢查询排查_MySQL慢查询设置配置

    MySQL慢查询优化_MySQL慢查询排查_MySQL慢查询设置配置<h2>引言</h2> MySQL数据中有记录慢查询的一种手段。并且是MySQL自带的。可用来排查那些查询sql语句执行得慢。从而给开发者提供一个调优得依据。 <h2>MySQL慢查询使用之查看慢查询相关参数</h2> 1.查看是否开启慢查询记录功能及慢查询日志存放路径信息 <pre> <code class="language-sql">show variables like 'slow_query%';</code></pre> <pre> <code class="language-html">mysql> show variables like 'slow_query%'; +---------------------------+----------------------------------+ | Variable_name | Value | +---------------------------+----------------------------------+ | slow_query_log | OFF | | slow_query_log_file | /mysql/data/localhost-slow.log | +---------------------------+----------------------------------+ </code></pre> 2.查看设置的长时间记录阈值(超过这个时间将会被记录到上方配置的日志文件中) <pre> <code class="language-html"> mysql> show variables like 'long_query_time'; +-----------------+-----------+ | Variable_name | Value | +-----------------+-----------+ | long_query_time | 10.000000 | +-----------------+-----------+</code></pre> <h2>MySQL慢查询使用之配置相关参数</h2> 配置慢查询日志启用/停用、日志存放路径、记录时间阈值修改<br /> 方式一:即时生效MySQL服务重启失效: <pre> <code class="language-sql">#设置日志存放路径 set global slow_query_log_file='/usr/local/mysql/data/slow.log'; #设置启用(ON)/停用日志(OFF) set global slow_query_log='ON'; #设置慢查询阈值时间;下面是超过1秒就记录 set global long_query_time=1; </code></pre> 方式二:重启MySQL服务生效: <pre> <code class="language-html">[mysqld] slow_query_log = ON slow_query_log_file = /usr/local/mysql/data/slow.log long_query_time = 1</code></pre> <br /> 测试: <pre> <code class="language-sql">select sleep(2);</code></pre> 查看慢查询日志记录: <pre> <code class="language-bash">cat /usr/local/mysql/data/slow.log</code></pre>
  • MySQL索引优化_MySQL索引类型_MySQL索引怎么用怎么创建

    MySQL索引优化,MySQL索引类型,MySQL索引怎么用MySQL索引怎么创建这里将会通过一些简单得sql进行讲解<h2>引言</h2>     本文用于MySQL数据库通过创建索引来调优的讲解。主要讲解的内容有:MySQL索引优化查询/MySQL索引类型/怎么创建MySQL的索引。<br />     通常大型网站单日就可能会产生几十万甚至几百万的数据,对于没有索引的表,单表查询可能几十万数据就是瓶颈。 <h2>一.简单的对比测试</h2>  测试表结构: <pre> <code class="language-sql">--创建一个测试用article表 CREATE TABLE article ( id bigint(20) NOT NULL AUTO_INCREMENT, title CHAR(255) NOT NULL, content LONGTEXT, TIME INT(10), PRIMARY KEY(id) )</code></pre> <p>以我去年测试的数据作为一个简单示例,20多条数据源随机生成200万条数据,平均每条数据源都重复大概10万次,表结构比较简单,仅包含一个自增ID,一个char类型,一个text类型和一个int类型,单表2G大小,使用MyIASM引擎。开始测试未添加任何索引。</p> <p>执行下面的SQL语句:</p> <pre> <code class="language-sql">mysql>SELECT id,FROM_UNIXTIME(time) FROM article a WHERE a.title='测试标题';</code></pre> 查询需要的时间非常恐怖的,如果加上联合查询和其他一些约束条件,数据库会疯狂的消耗内存,并且会影响前端程序的执行。这时给title字段添加一个BTREE索引: <pre> <code class="language-sql">mysql> ALTER TABLE article ADD INDEX index_article_tite (title);</code></pre> <h5>MySQL索引的概念</h5> <p>  索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。上述SQL语句,在没有索引的情况下,数据库会遍历全部200条数据后选择符合条件的;而有了相应的索引之后,数据库会直接在索引中查找符合条件的选项。如果我们把SQL语句换成“SELECT * FROM article WHERE id=2000000”,那么你是希望数据库按照顺序读取完200万行数据以后给你结果还是直接在索引中定位呢?(注:一般数据库默认都会为主键生成索引)。</p> <p>索引分为聚簇索引和非聚簇索引两种,聚簇索引是按照数据存放的物理位置为顺序的,而非聚簇索引就不一样了;聚簇索引能提高多行检索的速度,而非聚簇索引对于单行的检索很快。</p> <h5>MySQL索引的类型</h5> <h3>1.普通索引</h3> <p>这是最基本的索引,它没有任何限制,比如上文中为title字段创建的索引就是一个普通索引,MyIASM中默认的BTREE类型的索引,也是我们大多数情况下用到的索引。</p> <pre> <code class="language-sql">--直接创建索引 CREATE INDEX index_article_title ON article(title(255)); ---修改表结构方式添加索引 ALTER TABLE article ADD INDEX index_article_title (title); --创建表的时候创建索引 CREATE TABLE article ( id bigint(20) NOT NULL AUTO_INCREMENT, title CHAR(255) NOT NULL, content LONGTEXT, TIME INT(10), PRIMARY KEY(id), INDEX index_article_title (title(255)) ); --删除索引 DROP INDEX index_article_title ON article; </code></pre> <h3>2.唯一索引</h3> <p>与普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值(注意和主键不同)。如果是组合索引,则列值的组合必须唯一,创建方法和普通索引类似。<br />  </p> <pre> <code class="language-sql">--创建唯一索引 CREATE UNIQUE INDEX index_article_title ON article(title(255)); --修改表结构方式创建唯一索引 ALTER TABLE article ADD UNIQUE INDEX index_article_title (title(255)); --创建表的时候创建索引 CREATE TABLE article ( id bigint(20) NOT NULL AUTO_INCREMENT, title CHAR(255) NOT NULL, content LONGTEXT, TIME INT(10), PRIMARY KEY(id), UNIQUE index_article_title (title(255)) ); </code></pre>   <h3>3.全文索引(FULLTEXT)</h3> <p>    MySQL从3.23.23版开始支持全文索引和全文检索,FULLTEXT索引仅可用于 MyISAM 表;他们可以从CHAR、VARCHAR或TEXT列中作为CREATE TABLE语句的一部分被创建,或是随后使用ALTER TABLE 或CREATE INDEX被添加。////对于较大的数据集,将你的资料输入一个没有FULLTEXT索引的表中,然后创建索引,其速度比把资料输入现有FULLTEXT索引的速度更为快。不过切记对于大容量的数据表,生成全文索引是一个非常消耗时间非常消耗硬盘空间的做法。<br />  </p> <pre> <code class="language-sql">--创建表的时候创建索引 CREATE TABLE article ( id bigint(20) NOT NULL AUTO_INCREMENT, title CHAR(255) NOT NULL, content LONGTEXT, TIME INT(10), PRIMARY KEY(id), FULLTEXT (content) ); --修改表结构添加全文索引 ALTER TABLE article ADD FULLTEXT index_article_content(content); --直接创建索引 CREATE FULLTEXT INDEX index_article_content ON article(content);</code></pre> <p>4. 单列索引、多列索引</p> <p>多个单列索引与单个多列索引的查询效果不同,因为执行查询时,MySQL只能使用一个索引,会从多个索引中选择一个限制最为严格的索引。</p> <p>5. 组合索引(最左前缀)</p> <p>平时用的SQL查询语句一般都有比较多的限制条件,所以为了进一步提高MySQL的效率,就要考虑建立组合索引。例如上表中针对title和time建立一个组合索引:ALTER TABLE article ADD INDEX index_titme_time (title(50),time(10))。建立这样的组合索引,其实是相当于分别建立了下面两组组合索引:</p> <p>–title,time</p> <p>–title</p> <p>为什么没有time这样的组合索引呢?这是因为MySQL组合索引“最左前缀”的结果。简单的理解就是只从最左面的开始组合。并不是只要包含这两列的查询都会用到该组合索引,如下面的几个SQL所示:<br />  </p> <pre> <code class="language-sql">--使用到上面的索引 SELECT * FROM article WHERE title='测试' AND time=1234567890; SELECT * FROM article WHERE utitle='测试'; --不使用上面的索引 SELECT * FROM article WHERE time=123456789; </code></pre> <h2>二.MySQL索引优化</h2> <p>上面都在说使用索引的好处,但过多的使用索引将会造成滥用。因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。建立索引会占用磁盘空间的索引文件。一般情况这个问题不太严重,但如果你在一个大表上创建了多种组合索引,索引文件的会膨胀很快。索引只是提高效率的一个因素,如果你的MySQL有大数据量的表,就需要花时间研究建立最优秀的索引,或优化查询语句。下面是一些总结以及收藏的MySQL索引的注意事项和优化方法。</p> <h3>1. 何时使用聚集索引或非聚集索引?</h3> <table align="center" border="1" cellpadding="0" cellspacing="0" class="table table-bordered table-hover"> <tbody> <tr> <td>动作描述</td> <td>使用聚集索引</td> <td>使用非聚集索引</td> </tr> <tr> <td>列经常被分组排序</td> <td>使用</td> <td>使用</td> </tr> <tr> <td>返回某范围内的数据</td> <td>使用</td> <td>不使用</td> </tr> <tr> <td>一个或极少不同值</td> <td>不使用</td> <td>不使用</td> </tr> <tr> <td>小数目的不同值</td> <td>使用</td> <td>不使用</td> </tr> <tr> <td>大数目的不同值</td> <td>不使用</td> <td>使用</td> </tr> <tr> <td>频繁更新的列</td> <td>不使用</td> <td>使用</td> </tr> <tr> <td>外键列</td> <td>使用</td> <td>使用</td> </tr> <tr> <td>主键列</td> <td>使用</td> <td>使用</td> </tr> <tr> <td>频繁修改索引列</td> <td>不使用</td> <td>使用</td> </tr> </tbody> </table> <p>事实上,我们可以通过前面聚集索引和非聚集索引的定义的例子来理解上表。如:返回某范围内的数据一项。比如您的某个表有一个时间列,恰好您把聚合索引建立在了该列,这时您查询2004年1月1日至2004年10月1日之间的全部数据时,这个速度就将是很快的,因为您的这本字典正文是按日期进行排序的,聚类索引只需要找到要检索的所有数据中的开头和结尾数据即可;而不像非聚集索引,必须先查到目录中查到每一项数据对应的页码,然后再根据页码查到具体内容。其实这个具体用法我还不是很理解,只能等待后期的项目开发中慢慢学学了。</p> <h3>2. 索引不会包含有NULL值的列</h3> <p>只要列中包含有NULL值都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此复合索引就是无效的。所以我们在数据库设计时不要让字段的默认值为NULL。</p> <h3>3. 使用短索引</h3> <p>对串列进行索引,如果可能应该指定一个前缀长度。例如,如果有一个CHAR(255)的列,如果在前10个或20个字符内,多数值是惟一的,那么就不要对整个列进行索引。短索引不仅可以提高查询速度而且可以节省磁盘空间和I/O操作。</p> <h3>4. 索引列排序</h3> <p>MySQL查询只使用一个索引,因此如果where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。因此数据库默认排序可以符合要求的情况下不要使用排序操作;尽量不要包含多个列的排序,如果需要最好给这些列创建复合索引。</p> <h3>5. like语句操作</h3> <p>一般情况下不鼓励使用like操作,如果非使用不可,如何使用也是一个问题。like “%aaa%” 不会使用索引而like “aaa%”可以使用索引。</p> <h3>6. 不要在列上进行运算</h3> <p>例如:</p> <pre> <code class="language-sql">select * from users where YEAR(adddate)<2007;</code></pre> <p><br /> 将在每个行上进行运算,这将导致索引失效而进行全表扫描,因此我们可以改成:</p> <pre> <code class="language-sql">select * from users where adddate<’2007-01-01′</code></pre> <p>关于这一点可以围观:<a href="http://www.zendstudio.net/archives/single-quotes-or-no-single-quotes-in-sql-query" rel="external nofollow" target="_blank">一个单引号引发的MYSQL性能损失。</a></p> <p>最后总结一下,MySQL只对一下操作符才使用索引:<,<=,=,>,>=,between,in,以及某些时候的like(不以通配符%或_开头的情形)。而理论上每张表里面最多可创建16个索引,不过除非是数据量真的很多,否则过多的使用索引也不是那么好玩的,比如我刚才针对text类型的字段创建索引的时候,系统差点就卡死了。</p>
  • mysql数据库备份与还原命令_MySQL导出导入数据命令

    mysql数据库备份与还原命令_MySQL导出导入数据命令<p>mysql 数据库备份与还原命令</p> <p>1>导出某个数据库表结构</p> (其他说明:-u 后面的root为用户名,-p后面的password为用户密码,dbname数据库名称) <pre> <code class="language-sql">mysqldump –uroot –ppassword –d dbname > /home/test/dbfiles/dbtables.sql</code></pre> 2>导出某个数据库某张表或多张表表结构 <pre> <code class="language-sql">mysqldump –uroot –ppassword –d dbname tablename1>/home/test/dbfiles/dbtable.sql</code></pre> (多张表表名之间以空格隔开) <pre> <code class="language-sql">mysqldump –uroot –ppassword –d dbname tablename1 tablename2>/home/test/dbfiles/dbtable.sql</code></pre> 3>导出某个数据库数据以及表结构 <pre> <code>mysqldump –uroot –ppassword dbname>/home/test/dbfiles/db.sql</code></pre> 4>导出某个数据库中某个表或某几张表数据以及表结构 <pre> <code class="language-sql">mysql –uroot –ppassword dbname tablename1>/home/test/dbfiles/dbtable1.sql</code></pre> (多张表表名之间以空格隔开) <pre> <code class="language-sql">mysql –uroot –ppassword dbname tablename1 tablename2>/home/test/dbfiles/dbtables.sql</code></pre> 5>还原备份 <pre> <code class="language-sql">mysql  -u root –p password dbname < /home/test/dbfiles/db.sql</code></pre> 或者登录MySQL然后 <ol> </ol> <pre> <code class="language-sql">Mysql>/home/test/dbfiles/db.sql;</code></pre> <p><strong><span style="color:#ff0000">【注意】还原备份命令是mysql不是mysqldump</span></strong></p>
  • Centos MySql数据库找回root密码

    Centos MySql数据库找回root密码1.停止MySQL服务<br /> 2.编辑MySQL配置文件,在[mysqld]节点中添加以下内容 <pre> <code>skip-grant-tables</code></pre> 3.启动MySQL服务<br /> 4.输mysql回车进入mysql<br /> #mysql<br /> <br /> 5.切换至mysql数据库<br /> >use msyql<br /> 6.执行更新命令: <pre> <code>mysql> UPDATE user SET Password = password ( 'new-password' ) WHERE User = 'root' ; </code></pre> 7.找回密码后将/etc/my.cnf添加的内容注释掉 <pre> <code>#skip-grant-tables</code></pre> 8.重启MySQL服务<br /> service mysqld restart<br /> <br /> 密码找回完成!
  • MySQL 5.5 docker 部署手册

    运行篇命令:# docker run -d -v /jenkins/mysql55:/var/lib/mysql -p 3306:3306 --name mysql55 -e MYSQL_ROOT_PASSWORD=root mysql:运行篇命令:# docker run -d -v /jenkins/mysql55:/var/lib/mysql -p 3306:3306 --name mysql55 -e MYSQL_ROOT_PASSWORD=root mysql:5.5.62 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci注意:映射目录设置777权限防止权限问题登录篇docker exec -it mysql55 /bin/sh 说明:mysql55 是运行时候指定的容器名称通过上面命令可以直接登录容器里面,然后就像普通MySQL一样操作登录数据库mysql -uroot -proot创建数据库mysql>create database leftso;创建用户grant all privileges on leftso.* to leftso@'%' identified by 'leftso123456' WITH GRANT OPTION;删除数据库drop database leftso;备份命令备份所有库docker exec mysql55 sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /jenkins/mysql55/all-databases.sql ​备份指定库docker exec mysql55 sh -c 'exec mysqldump -d mysql -uroot -p"root"' > /jenkins/mysql55/all-databases.sql说明:-d指定备份库为mysql-p 后面根用户的密码恢复命令①复制数据文件到容器中docker cp /root/mysql-leftso-20201114.sql mysql55:/②执行恢复命令docker exec mysql55 sh -c 'exec mysql -uroot -proot leftso < /mysql-leftso-20201114.sql '③删除容器中的备份文件docker exec mysql55 sh -c 'exec rm -rf /mysql-leftso-20201114.sql'
  • MySQL索引使用摘录

    mysql索引的使用基础知识摘录。<p><em>互联网总结:</em></p> <h2>一.常见索引类型</h2> <ul> <li>normal 普通</li> <li>unique 唯一索引</li> <li>full text 全文索引</li> </ul> <h2>二.几种常见索引的区别</h2> <p>normal:表示普通索引</p> <p>unique:表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用作索引时,可设置为unique</p> <p>full text: 表示 全文搜索的索引。 FULLTEXT 用于搜索很长一篇文章的时候,效果最好。用在比较短的文本,如果就一两行字的,普通的 INDEX 也可以。</p> <pre> <code class="language-html">提示: 索引的类别由建立索引的字段内容特性来决定,通常normal最常见。</code></pre> <h2>三.哪些字段作为索引</h2> <h3>3.1.选择唯一性索引</h3>   唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录。例如,学生表中学号是具有唯一性的字段。为该字段建立唯一性索引可以很快的确定某个学生的信息。如果使用姓名的话,可能存在同名现象,从而降低查询速度。 <h3>3.2为经常需要排序、分组和联合操作的字段建立索引</h3> 经常需要ORDER BY、GROUP BY、DISTINCT和UNION等操作的字段,排序操作会浪费很多时间。如果为其建立索引,可以有效地避免排序操作。 <h3>3.3为常作为查询条件的字段建立索引</h3> 如果某个字段经常用来做查询条件,那么该字段的查询速度会影响整个表的查询速度。因此,为这样的字段建立索引,可以提高整个表的查询速度。 <h3>3.4限制索引的数目</h3> 索引的数目不是越多越好。每个索引都需要占用磁盘空间,索引越多,需要的磁盘空间就越大。修改表时,对索引的重构和更新很麻烦。越多的索引,会使更新表变得很浪费时间。 <h3>3.5尽量使用数据量少的索引</h3> 如果索引的值很长,那么查询的速度会受到影响。例如,对一个CHAR(100)类型的字段进行全文检索需要的时间肯定要比对CHAR(10)类型的字段需要的时间要多。 <h3>3.6尽量使用前缀来索引</h3> 如果索引字段的值很长,最好使用值的前缀来索引。例如,TEXT和BLOG类型的字段,进行全文检索会很浪费时间。如果只检索字段的前面的若干个字符,这样可以提高检索速度。 <h3>3.7删除不再使用或者很少使用的索引</h3> 表中的数据被大量更新,或者数据的使用方式被改变后,原有的一些索引可能不再需要。数据库管理员应当定期找出这些索引,将它们删除,从而减少索引对更新操作的影响。 <div>  <pre> <code class="language-html">注意:选择索引的最终目的是为了使查询的速度变快。上面给出的原则是最基本的准则,但不能拘泥于上面的准则。读者要在以后的学习和工作中进行不断的实践。根据应用的实际情况进行分析和判断,选择最合适的索引方式。</code></pre> </div> <h2>四.其他</h2> 除了上面说的MySQL索引知识外还有很多<br /> 例如:<br /> <strong>单列索引,多列索引</strong><br /> 多个单列索引与单个多列索引的查询效果不同,因为执行查询时,MySQL只能使用一个索引,会从多个索引中选择一个限制最为严格的索引。<br /> <strong>组合索引(最左前缀)</strong> <p>平时用的SQL查询语句一般都有比较多的限制条件,所以为了进一步榨取MySQL的效率,就要考虑建立组合索引。例如上表中针对title和time建立一个组合索引:ALTER TABLE article ADD INDEX index_titme_time (title(50),time(10))。建立这样的组合索引,其实是相当于分别建立了下面两组组合索引:</p> <p>–title,time</p> <p>–title</p> <p>为什么没有time这样的组合索引呢?这是因为MySQL组合索引“最左前缀”的结果。简单的理解就是只从最左面的开始组合。并不是只要包含这两列的查询都会用到该组合索引,如下面的几个SQL所示:<br />  </p> <pre> <code class="language-sql">--使用到上面的索引 SELECT * FROM article WHREE title='测试' AND time=1234567890; SELECT * FROM article WHREE utitle='测试'; --不使用上面的索引 SELECT * FROM article WHREE time=1234567890;</code></pre> <h5><strong>MySQL索引的优化</strong></h5> <p>上面都在说使用索引的好处,但过多的使用索引将会造成滥用。因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。建立索引会占用磁盘空间的索引文件。一般情况这个问题不太严重,但如果你在一个大表上创建了多种组合索引,索引文件的会膨胀很快。索引只是提高效率的一个因素,如果你的MySQL有大数据量的表,就需要花时间研究建立最优秀的索引,或优化查询语句。下面是一些总结以及收藏的MySQL索引的注意事项和优化方法。</p> <h3>最左前缀原则</h3> <p>这两天看《构建高性能Web站点》这本书,感觉写的真是不错,很多实际项目中会碰到的问题都有所提及,今天看到一个最左前缀原则,以前也听说过,不过一直没搞明白,今天查了下。</p> <p> </p> <p>通过实例理解单列索引、多列索引以及最左前缀原则<br /> <br /> 实例:现在我们想查出满足以下条件的用户id:</p> <pre> <code class="language-html">mysql>SELECT `uid` FROM people WHERE lname`='Liu'  AND `fname`='Zhiqun' AND `age`=26</code></pre> <p><br /> 因为我们不想扫描整表,故考虑用索引。<br /> <br /> 单列索引:</p> <pre> <code class="language-html">ALTER TABLE people ADD INDEX lname (lname);</code></pre> <p><br /> 将lname列建索引,这样就把范围限制在lname='Liu'的结果集1上,之后扫描结果集1,产生满足fname='Zhiqun'的结果集2,再扫描结果集2,找到 age=26的结果集3,即最终结果。<br /> <br /> 由 于建立了lname列的索引,与执行表的完全扫描相比,效率提高了很多,但我们要求扫描的记录数量仍旧远远超过了实际所需 要的。虽然我们可以删除lname列上的索引,再创建fname或者age 列的索引,但是,不论在哪个列上创建索引搜索效率仍旧相似。<br /> <br /> 2.多列索引:</p> <pre> <code class="language-html">ALTER TABLE people ADD INDEX lname_fname_age (lame,fname,age);</code></pre> <p><br /> 为了提高搜索效率,我们需要考虑运用多列索引,由于索引文件以B-Tree格式保存,所以我们不用扫描任何记录,即可得到最终结果。<br /> <br /> 注:在mysql中执行查询时,只能使用一个索引,如果我们在lname,fname,age上分别建索引,执行查询时,只能使用一个索引,mysql会选择一个最严格(获得结果集记录数最少)的索引。<br /> <br /> 3.最左前缀:顾名思义,就是最左优先,上例中我们创建了lname_fname_age多列索引,相当于创建了(lname)单列索引,(lname,fname)组合索引以及(lname,fname,age)组合索引。<br /> <br /> <span style="color:#ff0000">注:在创建多列索引时,要根据业务需求,where子句中使用最频繁的一列放在最左边。</span></p>
  • MySQL 安装 windows 5.6版本配置文件无效解决_MySQL安装后配置my.ini无效解决

    MySQL 安装,MySQL 安装了5.6版本,修改安装目录下的默认配置文件重启后配置无效。MySQL安装 windows 5.6版本配置文件无效解决_MySQL安装后配置my.ini无效解决MySQL安装了5.6版本,修改安装目录下的默认配置文件重启后配置无效。一.情况说明首先MySQL的安装版本是5.6,且是从MySQL官方网站下载的最新的MSI格式window的MySQL安装文件。安装成功后MySQL自动集成到windows系统的服务中名称为MySQL56.咋一看,MySQL安装已经成功。就开始了愉快的使用。啥?Java插入字符串到数据库中报错了,居然说不支持这种字符集。第一反应:哦,忘记改配置了得嘛,搜搜搜打开MySQL的安装目录。发现一枚my-default.ini配置文件。先不管啦,打开文件开始配置。在以下节点添加了字符集的配置:[client]default-character-set=utf8mb4#其他配置...[mysql]default-character-set=utf8mb4#...其他配置....[mysqld]character-set-server=utf8mb4#...其他配置....好啦,重启服务。打开MySQL工具,查询了下现在的字符集:show variables like '%char%';  无效图1看到上面的图,我就开始郁闷了,配置居然没有生效。于是乎开始百度--------------------------咦,找到一个,好像说的挺有道理的,应该把my-default.ini文件改成之前我们熟知的my.ini。文章说的他改了就成功了,于是乎我立即去复制了一份改成my.ini.重启MySQL服务.............重启完成这次应该对了吧,让我再用MySQL命令大法来看看字符集呢:show variables like '%char%';  无效图2持续懵逼中。。。看样子国内的消息不灵通啊,但是又请不动谷歌大神。好啦,只好这样啦。微软的小弟来,帮我一把吧,打开bing搜索引擎,选择国际版。搜索了一堆翻译的问题内容......咦,找到一篇英语的。这个说的好像有道理的样子。打开window的服务,找到MySQL56鼠标右键点击属性查看可执行文件路径图1图2​​​​​​​我勒个去,MySQL5.6安装版本居然默认服务指定的配置文件路径是...."C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld.exe" --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.6\my.ini" MYSQL56突然心中有千万头羊驼在奔跑......二.解决MySQL5.6安装版配置文件设置无效问题通过上面的配置,我们不难发现,MySQL5.6新版本的配置文件默认位置居然是C:\ProgramData\MySQL\MySQL Server 5.6\my.ini已然不是指定的安装目录C:\Program Files\MySQL\MySQL Server 5.6\两个解决办法:2.1直接去修改C:\ProgramData\MySQL\MySQL Server 5.6\my.ini文件2.2修改MySQL服务指定配置文件到自己的配置文件路径如指定到安装目录"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld.exe" --defaults-file="C:\Program Files\MySQL\MySQL Server 5.6\my.ini" MYSQL56
  • MySQL忘记root密码找回windows系统

    windows系统MySQL忘记root密码找回,MySQLwindows系统MySQL忘记root密码找回<br /> <strong>1.停止MySQL服务</strong><br /> <img class="img-thumbnail" alt="停止MySQL服务" src="/assist/images/blog/ab73dcb8-58f5-4f13-be46-a9d15ae97849.jpg" style="height:630px; width:402px" /><br /> <img class="img-thumbnail" alt="停止MySQL服务" src="/assist/images/blog/82bfa3aa-2843-4fc5-9275-ac6993dc8bad.jpg" style="height:230px; width:467px" /><br /> <strong>2.打开两个CMD 命令框</strong><br /> ①其中一个输入: <div>mysqld -nt --skip-grant-tables</div> <img class="img-thumbnail" alt="目录切换" src="/assist/images/blog/80695fbf-ae95-44c8-8dbd-4fb400253233.jpg" style="height:442px; width:677px" /><br /> <img class="img-thumbnail" alt="mysqld -nt --skip-grant-tables" src="/assist/images/blog/c609ec90-8e6c-4e75-8948-131eb615b612.jpg" style="height:442px; width:677px" /><br /> ②在另外一个输入 <div>mysql -u root</div> 这时候进入到了mysql安全模式<br /> 修改密码: <div>mysql>update mysql.user set password=PASSWORD('new_password') where User='root';</div> 刷新权限<br />   <div>mysql>flush privileges;</div> <img class="img-thumbnail" alt="mysql -u root" src="/assist/images/blog/e2b47636-2432-4e86-af62-4962e353a3c5.jpg" style="height:603px; width:669px" /><br /> <strong>3.启动任务管理器,结束mysqld进程</strong><br /> <img class="img-thumbnail" alt="结束mysqld.exe进程" src="/assist/images/blog/f27f36f5-6810-4d8c-9f18-d207851bb8f9.jpg" style="height:447px; width:412px" /><br /> <strong>4.启动mysql服务</strong><br /> <img class="img-thumbnail" alt="启动MySQL服务" src="/assist/images/blog/7ed31dac-bb7a-4f91-b31d-4298e5994f5f.jpg" style="height:301px; width:605px" /><br /> <strong>5.用新的root密码登陆</strong><br /> <img class="img-thumbnail" alt="新密码登陆" src="/assist/images/blog/614633e9-19e9-4faf-a905-08e0dc53230a.jpg" style="height:442px; width:677px" /><br /> 恭喜成功找回root密码<br /> <strong><em>【注意:】在密码找回的整个过程中,MySQL服务是关闭的,成功找回以后再次启动MySQL服务</em></strong><br />  
  • MySQL分页_MySQL分页语句_MySQ如何使用limit分页

    MySQL分页_MySQL分页语句_MySQ如何使用limit分页,本博客将会详细讲解mysql中的分页查询。讲清楚MySQL如何编写分页查询语句。MySQL分页_MySQL分页语句_MySQ如何使用limit分页
  • MySQL null转0

    MySQL查询中null转0本文主要讲解MySQL数据库查询中,通过ifnull函数将null替换为0,同样也可以替换为其他值。MySQL查询中null转0 SQL:select  ifnull(fieldName,0)  from table_name