1.官网https://dev.mysql.com/downloads/installer/下载并进行解压
2.从解压的文件可以看到默认没有my.ini配置文件(上图是我已经创建完毕的),需要手动创建并进行如下配置,若执行第3步报错mysqld: Can't create directory 'F:\WorkSoft\Mysql\mysql-8.0.12-winx64\data' (OS errno 2 - No such file or directory),检查文件没问题的话,则把 \ 改为 / ;
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=F:\WorkSoft\Mysql\mysql-8.0.12-winx64
# 设置mysql数据库的数据的存放目录(data目录改教程不需要手动创建)
datadir=F:\WorkSoft\Mysql\mysql-8.0.12-winx64\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
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8
3.配置环境变量(不配置也可以,需要切换到mysql的bin目录下进行操作),
4.执行mysqld --initialize --console(执行这一步的时候不需要手动创建data文件夹,如果创建了则会有报错提示,并且不能成功启动服务),执行完之后会生成root用户名的密码,如下图
2018-08-21T16:22:38.693681Z 0 [System] [MY-013169] [Server] F:\WorkSoft\Mysql\mysql-8.0.12-winx64\bin\mysqld.exe (mysqld 8.0.12) initializing of server in progress as process 2516
2018-08-21T16:23:02.253905Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: Ve4agd2;NQNs
2018-08-21T16:23:19.143093Z 0 [System] [MY-013170] [Server] F:\WorkSoft\Mysql\mysql-8.0.12-winx64\bin\mysqld.exe (mysqld 8.0.12) initializing of server has completed
5.安装服务,执行mysqld --install [服务名],服务名可以不写,默认为MySQL; 执行成功会提示Service successfully installed.
6.启动服务,执行net start mysql;
1.若需要修改密码,cmd命令窗口使用管理员执行,输入mysql -u root -p,输入第4步生成的密码成功进入mysql;执行下面语句
8.0版本:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
5.7版本:进入mysql这个库,更改uesr表
mysql -u root -p;
myslq> use mysql;
mysql> update user set password=password("123456") where user="root";
修改成功图如下
2.授权远程访问root用户权限:
5.7版本:按顺序先后执行;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
flush privileges;
8.0版本:同样按照顺序执行
update user set host = "%" where user = "root";
flush privileges;
3.如果安装成功但是服务不能启动成功,先检查配置文件,若不行需要重新执行安装命令,先清空data文件,然后重头执行即可;
4. 一些安装过程可能用到的命令:
执行mysqld -remove 服务名,可移除服务(该方法卸载mysql的时候可以移除服务中的MySQL);
删除指定服务可用sc delete 服务名,例如sc delete mysql80;
show global variables like 'port'; 查看端口;
5. 错误集合解决
(1) > 1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'lianzheng.t1.option_type' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by; 对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中。在严格模式下,不要让GROUP BY部分中的查询指向未选择的列,否则报错。 解决办法(重启服务仍然有效):
5.7版本:进入到mysql数据库,执行select @@sql_mode;可以看到5.7版本的默认设置:
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
my.ini配置文件中加入以下代码,注意是在[mysqld]下不是[mysql],sql_mode=后面双引号,单引号,不加引号都可以,执行完之后会发现ONLY_FULL_GROUP_BY已经不存在;
[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"
8.0版本:可以看出默认设置仍然是带ONLY_FULL_GROUP_BY
mysql> select @@sql_mode;
+-----------------------------------------------------------------------------------------------------------------------+
| @@sql_mode |
+-----------------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION |
+-----------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
解决办法跟5.7一样
sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
(2) >使用net start MySQL80 服务无法启动。先检查配置my.ini配置文件有没有错误;其次检查my.ini的编码格式是否是ANSI格式;