最新版本可以上官网在 MySQL 下载 中选择 Microsoft Windows(x86,64-bit) ,ZIP Archive 下载。无需在该网站注册信息。下载完后,我们将 zip 包解压到相应的目录,这里我将解压后的文件夹放在 F:\Mysql\mysql-8.0.13-winx64 下。
接下来我们需要配置下 MySQL 的配置文件
打开刚刚解压的文件夹 F:\Mysql\mysql-8.0.13-winx64 ,在该文件夹下创建 my.ini 配置文件,编辑 my.ini 配置以下基本信息:
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
# 设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=F:\\Mysql\\mysql-8.0.13-winx64
# 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错
# datadir=C:\\web\\sqldata
# 允许最大连接数
max_connections=20
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
接下来我们来启动下 MySQL 数据库:
以管理员身份打开 cmd 命令行工具,切换目录:
cd /d F:\Mysql\mysql-8.0.13-winx64\bin
初始化数据库:
mysqld --initialize --console
执行完成后,会输出 root 用户的初始默认密码,如:
...
2018-04-20T02:35:05.464644Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: APWCY5ws&hjQ
...
APWCY5ws&hjQ
就是初始密码,后续登录需要用到,记得在关闭当前命令行之前先复制下来。
继续,在F:\Mysql\mysql-8.0.13-winx64\bin
目录下:
执行数据库的安装、初始化mysql数据库的数据存放目录data以及mysql服务的启动。
mysqld install
mysqld --initialize-insecure
net start mysql
如果在执行第三条语句net start mysql
出现:
发生系统错误 2。
系统找不到指定的文件。
原因:你服务的路径和安装的路径不一致造成的,之前安装过mysql后卸载的机器容易出现这样的问题。
解决方法:修改一下注册表。首先进入命令行,输入regedit,回车,进入注册表编辑器。选择 HKEY_LOCAL_MACHINE -> SYSTEM -> CurrentControlSet -> services -> MySQL
, 修改ImagePath
的路径,为你的安装路径, 比如 F:\Mysql\mysql-8.0.13-winx64\bin\mysqld MySQL
。
如果我们要登录本机的 MySQL 数据库,只需要输入以下命令即可:
mysql -u root -p
如果出现:
ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)
从错误的提示中可以看出MySQL服务没有启动,因此只需要启动MySQL服务就可以了
直接采用net start MySQL
就可以启动MySQL服务,但如果输入命令后仍然出现错误 :
服务名无效
请键入 NET HELPMSC 2185 以获得更多帮助。
原因:服务名不一致引起。在自定义安装的过程默认服务名可能会加上MYSQL的版本数字。
解决方案:系统搜索进入服务
,找到其中的MySQL服务,检查其服务名是否有数字后缀,如:MYSQL80。此时再输入net start MySQL80
,如果发生如下错误:
发生系统错误 5。
拒绝访问。
原因:权限不够
解决方案:以管理员身份运行CMD,系统搜索cmd
之后右击以管理员的方式运行。
以上错误都不发生的正常情况如下:按回车确认会得到以下响应:
Enter password:
将我们刚刚复制下来初始密码输入,如果正确的话,就已经 成功进入数据库中了。命令提示符会一直以 mysq> 加一个闪烁的光标等待命令的输入, 输入 exit
退出登录。
接下来我们来修改下 MySQL 数据库的登录密码:
正常的修改密码方法如:
mysql> use mysql;
mysql> update user set password=password('123456') where user='root' and host='localhost';
mysql> flush privileges;
执行报错的话:
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
我们可以用如下语句执行:
set password '123456'
成功的话,执行show databases;
能够看到当前所以的数据库。
如果一切顺利的话,只需要在SQLYog中新建一个MYSQL
连接,填入主机地址:localhost
,用户名:root
,密码:123456
,端口:3306
就可以了。
如果端口不对,可以用命令行进入数据库通过以下指令查询得到:
show global variables like 'port';
如果配置新连接报错:错误号码 2058,分析是 mysql 密码加密方法变成caching_sha2_password
了(8.0版本开始出现的问题)。
解决方法:windows 下cmd 登录 mysql -u root -p 登录你的 mysql 数据库,然后执行这条SQL(注意分号):
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword';
用新密码到SQLYog登录。
本人一直使用的是5.x版本的mysql进行开发,不料在这次的项目开发中JDBC加载数据库时,出现了从未有过的问题,一慌之下就卸载重载了(天知道我当时怎么想的…)
由于本人用的是8.0版本数据库,所以JDBC调用时需要注意如果出现以下问题(这个问题也是我重装8.0版本吧的根源…):
SunCertPathBuilderException: unable to find valid certification path to requested target
原因:可能是由于选择使用SSL的方式访问数据库,没有有效证书
解决方案:配置驱动类的url时,将uesrSSL设为false。
ds.setUrl("jdbc:mysql://localhost:3306/software_project?serverTimezone=UTC&userSSL=false");
需要补充的时,8.0的Mysql也支持开发者这么使用。修改之后依旧出现如下问题:
java.sql.SQLException: Unknown system variable 'query_cache_size'
原因:mysql-connecter-java
的版本过低,很显然是数据库驱动程序与数据库版本不对应 。
解决方法:导入mysql-connecter-java-8.0.13.jar
,如果使用maven管理的话在pom.xml中添加:
mysql
mysql-connector-java
8.0.13
没想到我在使用maven管理的时候,下载这个版本的竟然没成功(maven导包经常由于网络原因没有下成功,网上建议换成阿里源的我尝试了,效果不是很理想),于是手动上官网下载放入maven的存库中我的路径是C:\Users\user\.m2\repository\mysql\mysql-connector-java\8.0.13
,避免中间有坑,这里直接贴上网址。
之后,我们连接数据库驱动时需要注意:
驱动类改成com.mysql.cj.jdbc.Driver
,指定时区改成serverTimezone=UTC
BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName("com.mysql.cj.jdbc.Driver");
//ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:mysql://localhost:3306/software_project?serverTimezone=UTC&userSSL=false");
ds.setUsername("root");
ds.setPassword("123456");
如果已经确定导入最近mysql-connecter-java
包还出现如下错误:
java.lang.ClassNotFoundException:com.mysql.cj.jdbc.Driver)
原因:必需的jar没有包含在应用程序服务器上部署的Artifact配置中
解决方案:进入Project Structure 将该jar包部署进Artifact 中,在如下方框处,右击选择第一个选项。
最后JDBC成功访问8.0版本的Mysql数据库。
服务
找到MYSQL后关闭即可。