准备
mysql 下载地址: 点击下载. 教程使用的版本为: mysql-8.0.11-winx64
安装环境: win10
一. 安装
1. 解压zip 包. 安装目录为C:\develop\mysql8
2. 在该目录下 新建my.ini 文件. 文件内容添加:
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=C:\develop\mysql8
# 设置mysql数据库的数据的存放目录
datadir=C:\develop\mysql8\data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
# 修改sql_mode 避免使用select * 查询时必须使查询列在group by 中显示.
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8
上面的basedir 设置mysql 安装路径. datadir 指定数据存放地址. 可以在安装路径下创建data 文件夹. 如上所示. 或者在任意创建文件夹并指定对应datadir.
3. 通过"以管理员身份运行" cmd 命令窗口. cd 进入mysql 安装文件夹下的bin 目录.执行命令
mysqld --initialize --console
--initialize: 用于执行安装
--console: 用于在cmd 中显示执行过程.
执行后显示:
c:\mydeveloper\mysql8\bin>mysqld --initialize --console
2018-05-11T01:32:11.612666Z 0 [System] [MY-013169] [Server] c:\mydeveloper\mysql8\bin\mysqld.exe (mysqld 8.0.11) initializing of server in progress as process 45842018-05-11T01:32:17.389793Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: MiH9)w3-2nkO
2018-05-11T01:32:19.204325Z 0 [System] [MY-013170] [Server] c:\mydeveloper\mysql8\bin\mysqld.exe (mysqld 8.0.11) initializing of server has completed
命令中显示:
A temporary password is generated for root@localhost: MiH9)w3-2nkO
最后的MiH9)w3-2nkO 是mysql 自动生成的密码. 保存下来等下登录使用
4. 安装服务: 在相同的目录下输入
mysqld --install [服务器名称]
完成安装. 服务器名称不指定时默认为mysql.
二. 登录, 更改密码
1. 登录
在cmd 中输入
net start [服务器名称]
这里默认为mysql.
cmd 输入
mysql -uroot -p
cmd显示
c:\mydeveloper\mysql8\bin>mysql -uroot -p
Enter password:
将刚才保存的密码粘贴到这里. 鼠标右键默认粘贴.
2. 修改密码:
mysql 登录后输入
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
通过制定password 修改密码.
三. my.ini 命令解析
1. 文件中[mysqld] 和[mysql] 是必须的. 用于制定参数对应的命令. 不能删除
2. 从MySQL8.0.4开始,MySQL的密码认证插件是从“mysql_native_password”,改为“caching_sha2_password”。因为新的密码认证方式在很多客户端可能不支持. 所以在ini 文件中指定为 "mysql_native_password".
3. 使用
select @@GLOBAL.sql_mode;
select @@SESSION.sql_mode;
命令查询会发现sql_mode 都指定了ONLY_FULL_GROUP_BY. 该模式下select 的查询列都必须出现在group by 子句中. 如果没有group by. 会报错. 所以在配置文件中指定模式中去掉ONLY_FULL_GROUP_BY. 在新版本中可能会有其他模式存在. 则sql_mode 中值使用命令
SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
select @@GLOBAL.sql_mode.
获取对应的sql_mode. 填写在my.ini 文件中.