使用MySQL踩过的坑
博客专区 > trayvon 的博客 > 博客详情
使用MySQL踩过的坑
trayvon 发表于1年前
使用MySQL踩过的坑
  • 发表于 1年前
  • 阅读 85
  • 收藏 1
  • 点赞 0
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

摘要: 这篇文章主要记录我在使用的时候遇到的问题,主要是希望帮到一些初学者,所以有一些比较细致的记录。当然也有一些技巧和方法希望能够帮助到其他遇到问题的同学,或者作为参考。

   首先从MySQL官方网站下载MySQL,我选择的是5.6的非安装版本,是在Windows系统系,MySQL下载地址。然后解压到你想要的目录,把my-default.ini拷贝一份重命名为my.ini这个是MySQL服务启动时默认读取的配置文件。如下图所示:

                      

1  MySQL目录

   为了方便,把MySQLbin目录加入到path环境变量中,当在程序在搜索可执行程序的时候会搜索path指定的目录。我们就可以直接像这样mysql –u root –p执行命令,而不用像D:\db\mysql\mysql-5.6.31-winx64\bin\mysql –u root –p这样来执行命令。

一、添加环境变量

1.      右键计算机选择属性

2 计算机属性

 

2.      选择高级系统设置

3 系统高级设置

 

3.      选择环境变量

4 系统环境变量

 

4.      选择Path变量,单击编辑按钮

5 编辑环境变量

 

5.      添加MySQLbin目录

6 添加MySQL环境变量

注意:上面是添加MySQLbin目录,不是覆盖,只需要使用分号(;)把前面的目录隔开就可以了。

二、MySQL服务

 

1MySQL客户端(mysql)与MySQL服务(msyqld

   这里首先要区分一下MySQL的服务器和MySQL的客户端,因为可能会有同学对这2个概念有点混淆。有的同学可能会看到过下载MySQL的时候有很多包可选,有的只有几兆,十几兆,有的却有几百兆。这里除了版本、针对的系统不一样之外,还有就是有的只有MySQL客户端工具,有的只有MySQL服务器,有的是包含各种套件,包括客户端,服务器以及测试套件等。

   这里最重要的也是最容易混淆的区分就是MySQL的客户端和MySQL的服务。我们一般通过mysql命令只是一个客户端工具而已,并不包含MySQL的服务,mysqlMySQL客户端)和mysqld(MySQL服务)是分开的。我们可以通过只下载一个几兆的MySQL的客户端也可以使用远程的MySQL服务。而如果要使用本地MySQL服务,就要启动MySQL服务。

2. MySQL服务启动

可以直接通过下面2个命令来启动服务

mysqld

mysqld --defaults-file="D:\db\mysql\mysql-5.6.31-winx64\my.ini"

一个是指定了配置文件一个是没有指定配置文件启动MySQL服务的。如果启动成功就会看到如下图所示的界面:

              

7 启动MySQL

 

   然后上面的窗口就可以关闭了,可以在Windows任务管理器中就可以看到一个mysqld进程:

8 mysqld进程

 

接下来就可以直接通过下面的命令直接回车连接MySQL服务了

mysql –u root -p

           

9 连接MySQL服务

   这是因为MySQL非安装版默认有2个用户,一个是root,一个是空(不是null),都是没有密码的。可以通过root用户执行下面的命令来查看:

Select host,user,password from mysql.user

 

                 

10 MySQL默认用户

 

   当用户密码为空(’’不是null)的时候可以直接连接数据库服务,如上图host列表示可以连接的主机iplocalhost127.0.0.1::1都是表示本机,::1IPV6的表示方法。就是说只允许主机没有密码连接,还有一个通配符%表示任意,例如,最常见的表示就是host设置为192.168.%.%用来限制只有指定的网段能够通过这个用户这个密码连接MySQL服务。

   为了安全,还是为root用户设置一个密码吧,可以通过下面的语句来设置MySQL的密码。

update mysql.user set password=password(123456) where user='root';

   上面的SQL语句是将用户名为root的用户密码修改为123456password(123456)是调用MySQLpassword函数对密码123456进行加密处理。因为MySQL存储的密码都是加密的。

 

3. 安装MySQL服务

如果觉得每一次都要执行命令启动MySQL服务麻烦就可以安装MySQL服务,然后设置自动启动。可以通过下面的命令来安装MySQL服务:

mysqld --install mysql --defaults-file="D:\db\mysql\mysql-5.6.31-winx64\my.ini"

   其中mysql是要安装服务的名字。如果出现像下面的情况那么就恭喜你,你踩到坑了,而且还是天坑。

             

11 启动MySQL服务

   诶,不是明明提示Service successfully installed吗?就算我这英语渣渣也是知道提示我服务安装成功了啊。下面我们来尝试启动一下MySQL服务,执行命令。

net start mysql

              

12 令人崩溃的错误

   发生了系统错误2,系统找不到指定文件。那画面太美我不敢看,人与电脑最基本的信任呢?这究竟是道德的沦丧,还是系统的扭曲。嗯,我们还是来看一下我们安装的服务吧。执行services.msc命令打开service服务查看窗口找到我们安装的mysql服务,右键选择属性。

              

13 查看服务属性

   发现安装的mysql服务的可执行文件根本就不是我们的MySQLbin目录下的mysqld服务啊,这是什么鬼。

                        

14 服务属性

 

   怎么解决呢?首先先删除原来的服务,然后在我们的mysqlbin目录下来执行安装服务。

删除服务,可以通过下面的命令来执行

sc delete mysql

mysqld –remove mysql

 

   然后在MySQLbin目录下执行安装服务命令,可以发现同样的命令只是换了一个目录执行就成功了。

               

15 启动MySQL服务成功

三、编码配置

   在刚刚开始使用MySQL的时候,遇到最多的问题肯定是MySQL的编码问题了。可以执行下面的命令查看MySQL的各个编码设置。

show variables like ‘char%’

show variables like ‘char%’

          

16 查看MySQL编码

   一般情况下为了偷懒,我们会把除了character_set_filesystem的编码外的所有编码设置为utf-8。最简洁的配置就是在my.ini(Linux下的my.cnf)文件中配置为下面的样子。

[client]

default-character-set=utf8

[mysqld]

character-set-server=utf8


sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

           

17 配置之后的MySQL编码

 

   如果是安装MySQL服务配置是要在MySQL服务安装之前配置,如果已经安装了想重新配置,关闭服务,删除服务,重新安装就可以了。如果发现数据库中已经有乱码问题了,才重新配置,需要删除数据库重新建立数据库。

四、一些问题的解决方法

   当我们遇到问题的时候,有时候根本无从下手,因为没有进入程序,所以也得不到应用程序的任何日子,就可以通过Windows的日子中的应用日子来得到一些信息,有时候这些信息是非常有用的。例如,常见的的my.ini编码配置错误的时候出现的错误提示:

18 启动MySQL错误

   通过一般的信息可能不是很清楚发生了什么,就可以执行win+R 然后输入compmgmt.msc,然后回车确定打开Windows的组件管理器。

                        

19 启动Windows组件管理器

 

             

20 查看Windows应用系统日志

   通过上面的方法如果对于MySQL熟悉的话,还是能获得很多有用的信息,比如启动了那些组件,在什么时候出的错误执行的关闭流程,根据这些信息结合一些MySQL的知识基本就可以知道MySQL出现错误的原因了。

共有 人打赏支持
粉丝 12
博文 91
码字总数 140014
作品 1
×
trayvon
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: