一,安装包的下载
1,官网下载 https://dev.mysql.com/downloads/mysql/ 下载这个201M的即可免安装版
不用注册,谢谢
二,此时解压后的文件中没有data目录和ini文,此时可以做环境变量,
也可以最后做。在安装目录下创建一个my.ini文件,文件内容如下:
[Client]
port = 3306
[mysqld]
设置端口
port = 3306
指定server-id
server-id = 1
开启binlog日志
log-bin=mysql-bin
指定中继日志名字
relay-log=relay-log
跳过密码验证
skip-grant-tables
** 设置mysql的安装目录**
basedir=C:\mysql2\mysql-5.7.26-winx64
设置mysql数据库的数据的存放目录
datadir=C:\mysql2\mysql-5.7.26-winx64\data
bin log日志每达到设定大小后,会使用新的bin log日志
max_binlog_size = 200M
保留指定日期范围内的bin log历史日志,以下设置的15天内
expire_logs_days = 15
允许最大连接数
max_connections=200
设置提交方式(自动提交)
autocommit=1
隔离级别(读已提交)
transaction-isolation = READ-COMMITTED
1.STRICT_TRANS_TABLES在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做任何限制
2.NO_ENGINE_SUBSTITUTION如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常。
3.sql-mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"
服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
[mysql]
设置mysql客户端默认字符集
default-character-set=utf8
根据自己的需求选择需要的复制过去就行,那个跳过密码验证在8.0版本好像用不了了,安装路径和data目录根据自己的修改,端口和server-id也可以自定义。
进入bin目录shift+右键打开cmd命令窗口,如果已经做了环境变量那随意在哪里打开。
三,安装,初始化,启动服务,登陆。mysql8是服务名与初始化,自已定名字。
mysqld --install mysql8
mysqld --initialize --console
net start mysql8
mysql -u root -p
哦豁,我在这里报错了,系统缺少Microsoft.Net.Framework的安装。
官网下载Microsoft.Net.Framework的安装:
https://www.microsoft.com/zh-CN/download/details.aspx?id=49981
安装Visual C++ Redistributable for Visual Studio 2015
去微软官网下载Visual C++ Redistributable for Visual Studio 2015
下载地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=48145
本人度盘有这个文件VC_redist.x64.exe
启动服务,服务名要与上面定义的名字相同。
登陆mysql,初始化密码:在mysqld --initialize --console中看到。
四,修改用户密码,创建远程登陆用户。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
create user 'root'@'%' identified with mysql_native_password by 'xxxxx';
grant all privileges on *.* to 'root'@'%' with grant option;
flush privileges;
五,设置时区问题。
IDEA中如果没设置时区,访问mysql 8会出现异常。具体不得而知。
--原因一:java数据库连接使用UTC时区(世界标准时间),即serverTimezone=UTC
url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=true
--原因二:MySQL使用的time_zone属性是+00:00,而北京时间比UTC时间早8小时,即UTC+08:00
检查MySQL
可查看全局的时区设置和会话的时区设置
global.time_zone负责java连接数据库时的时区设置
session.time_zone负责Navicat客户端连接数据库时的时区设置
mysql> select @@global.time_zone,@@session.time_zone;
还有一种方法
System代表采用系统时区
CST是一种很乱的时区,它包括了4个时区
mysql> show variables like '%time_zone%';
验证时区,这行命令可以检测session.time_zone是否正确配置
mysql> select now();
解决方法
步骤一:修改java中的时区为东八区
// serverTimezone可以设置为北京时间GMT%2B8、上海时间Asia/Shanghai或者香港时间Hongkong
url: jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=true
步骤二:修改MySQL数据库的时区为东八区
// 方法一:使用命令(优点:不需要重启MySQL服务,缺点:一旦MySQL服务被重启,设置就会消失)
mysql> set time_zone = '+8:00';
mysql> set global time_zone = '+8:00'; //本人测试用得最多的一种方法。
// 方法二:修改my.ini配置文件(优点:永久保存设置,缺点:需重启MySQL服务)
[mysqld]
// 设置默认时区
default-time_zone='+8:00'