windows下安装mysql的正确打开方式
安装MySQL
的坑点汇总
# 前言
今天早上好气呀!因为项目原因需要在自己电脑上安装一个mysql
,去官网下载mysql
的安装工具,结果到了最后一步无法配置mysql
,就是那种可以选但是没有下一步按钮,这不是为难用户吗?折腾了半天只能删除mysql installer
,下载 mysql 源码进行安装。下面简单描述下自己的安装过程:
# 安装 mysql
下载 mysql 源码 官网下载地址
下载完成之后将其解压到本地目录,在
mysql
根目录下新建一个data
和一个log
文件夹,此外还需要新建一个my.ini
文件,用来配置mysql
,写入如下代码:
[mysqld]
basedir=D:\mysql
datadir=D:\mysql\data
2
3
配置
mysql
的bin\
目录到系统环境变量,并重启计算机以管理员身份运行cmd,并输入以下代码
# 将mysql安装为系统服务
mysqld -install
# mysql初始化,如果需要不开启用户认证,请将mysqld --initialize替换成mysqld --initialize-insecure
mysqld --initialize
# 启动mysql
net start mysql
2
3
4
5
6
注意:在启动mysql
之前一定要进行初始化,否则就会出现‘The mysql service could not be started. The service did not report an error’
C:\Windows\system32>net start mysql
The MySQL service is starting.
The MySQL service could not be started.
The service did not report an error.
More help is available by typing NET HELPMSG 3534.
2
3
4
5
如果出现这个错误,请先删除 data\目录下的所有数据,然后重新执行 mysqld --initialize
- 最后关于
mysql
使用root
无法登陆,以及如何让本地mysql
支持远程访问等这些问题,请翻阅我以前的 csdn 博客:
注意新版的 mysql 已经将 password 从 user 表中移除了,修改密码请使用以下代码
use mysql
update user set authentication_string=PASSWORD('123456') where user="root";
2
# 史上最坑集合
1、The mysql service on Local computer started and then stopped
由于修改 mysql 编码很频繁,导致mysql
一直重启又关闭,最后一次重启时竟然不干了,直接报The mysql service on Local computer started and then stopped
,我又开了漫天盖地的百度,google
,可是愣是没找到一种解决方案(重启电脑都试过两次了)。于是开始试着去读 mysql 的错误日志,发现自己在修改编码的时候在 my.ini 文件的[mysqld]下面加入了character_set_database=utf8
,但是mysql
并不能识别这个配置。于是我将这一行配置删除掉。并且在注册表删除记录---HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL
。重启mysql
,这次报了今天早上遇到的错误“The mysql service could not be started. The service did not report an error”
,于是只能删除 data\目录下的所有数据,使用mysqld --initialize-insecure
重新初始化一遍,最后才启动成功,我还得重新创建root
用户。真心别坑我啊,难受>_<
2. windows mysql 不支持中文
修改my.ini
配置文件
[mysqld]
basedir=D:\mysql
datadir=D:\mysql\data
character_set_server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
2
3
4
5
6
7
8
9
10
最后删除mysql
下的 data\目录从头到尾再来一遍吧,因为配置虽然改了,但是原来那些创建的表的编码还没有被改变,插入中文还是会出问题。尝试过网上说的直接进入mysql
命令行改编码,但是没啥用啊,改了之后推出再进去还是原来的编码。也可能是我改的时候出了啥问题,作为一种方法吧,不行的时候可以试试。
use mysql;
show variables like'%char%';
set character_set_database=utf8;
set character_set_server=utf8;
set character_set_client=gbk;
set character_set_connection=gbk;
2
3
4
5
6
3、分组查询错误---this is incompatible with sql_mode=only_full_group_by
在 mysql 命令行模式下输入一下代码:
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
不行的话就执行这句:
set @@sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
最终使用select @@sql_mode
查看取得的值中是否还有ONLY_FULL_GROUP_BY
。