下载地址:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.31-winx64.zip
我是下载到D盘,直接解压到当前目录
修改(或者增加,不存在的话)配置文件,即目录下的my.ini文件
配置内容如下,其中basedir需要设置自己的安装目录
[client]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#设置3306端口
port = 3306
# 设置mysql的安装目录 这块换成自己解压的路径
basedir=D:\\mysql-5.7.31-winx64
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
保存关闭,为了后续操作方便,可以设置一个环境变量。
在命令行窗口中执行以下指令,来初始化MySQL
如果没有配置环境变量,需要进入安装目录/bin
目录下执行
mysqld --initialize
使用mysqld --install
执行安装
使用net start mysql
启动服务
停止指令为net stop mysql
进入安装目录下/data
文件内有一个*.err
文件
打开后可以看到临时密码,我这里是1d/#xf3!.Nk6
2020-07-23T08:18:05.221825Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2020-07-23T08:18:07.472402Z 0 [Warning] InnoDB: New log files created, LSN=45790
2020-07-23T08:18:07.874587Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2020-07-23T08:18:08.019089Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 0a31e8ea-ccbd-11ea-bb1d-dcf401e6ae12.
2020-07-23T08:18:08.051813Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2020-07-23T08:18:11.056880Z 0 [Warning] CA certificate ca.pem is self signed.
2020-07-23T08:18:11.509636Z 1 [Note] A temporary password is generated for root@localhost: 1d/#xf3!.Nk6
登录方式和Linux一致,使用临时密码可正常登录
登录成功后,强制要求修改密码,可直接使用以下语句执行
# 密码自定义
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
之前安装过一次,没有卸载干净,在执行mysqld -install时出现服务已存在
解决办法:
输入命令sc query mysql
查看名为mysql的服务
输入命令sc delete mysql
,删除该mysql
再执行mysqld --install
即可
在MySQL正常启动的情况下,在服务器本机连接数据库速度很快,但是在其它节点连接数据库,则非常慢,但是能连接上。
解决办法:
my.ini
配置文件中[mysqld]
项内增加以下参数
# 禁止域名解析
[mysqld]
...
skip-name-resolve
...
然后重启MySQL
服务就行了。
在navicat中执行命令,命令本身是可以执行的,但是执行后面还会出现如下的错误。
[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY
clause and contains nonaggregated column
‘information_schema.PROFILING.SEQ’ which is not functionally dependent
on columns in GROUP BY clause; this is incompatible with
sql_mode=only_full_group_by
首先查询sql_mode
# 查询
select version(), @@sql_mode;
# 结果
5.7.31 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
思路是把ONLY_FULL_GROUP_BY
这一项给取消掉
解决办法:
修改配置文件,编辑my.ini
文件
my.ini
配置文件中[mysqld]
项内增加以下参数
[mysqld]
...
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
...
然后重启MySQL
服务就行了。
当我用程序往数据库插入数据时,本地文本解析的时间明明是正确的,比如2020-07-07 00:03:00
,但是数据里显示的却2020-07-06 11:03:00
,前后差了13个时,网上搜了一番,说是CST
时间的问题
mysql> show variables like '%TIME_ZONE%';
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | CST |
| time_zone | SYSTEM |
+------------------+--------+
如果system_time_zone
为空,time_zone
为SYSTEM
,则不用修改
如果system_time_zone
为CST
,则需要修改
解决办法:
# mysql命令行下执行
set global time_zone = '+08:00';
set time_zone = '+08:00';
或者修改配置文件
[mysqld]
...
default-time-zone = '+08:00'
...