环境准备

2020-04-06 144539

安装MySQL8.0时出现以上错误需要安装Visual C++ Redistributable for Visual Studio 2015,如果安装VC++ 2015出现以下错误:

image-20200406161855130

说明系统中已经安装VC++ 2015以上版本,请下载适用于 Visual Studio 2015、2017 和 2019 的最新支持的 Visual C++ 可再发行软件包

image-20200406162349460

配置文件

MySQL具有许多默认参数,您可以在服务启动时使用命令行选项或配置文件进行更改,在Windows上我们可以创建.ini.cnf文件。在MySQL根目录下我们新建my.ini,用记事本打开,例如,[mysqld]部分,安装目录 E:/MySQL/mysql-8.0.19-winx64,数据目录 E:/MySQL/mysql-8.0.19-winx64/data

[mysqld]
# set basedir to your installation path
basedir=E:/MySQL/mysql-8.0.19-winx64
# set datadir to the location of your data directory
datadir=E:/MySQL/mysql-8.0.19-winx64/data

从MySQL 8.0.16开始,MySQL支持一个--validate-config选项,该选项使您无需在正常操作模式下运行服务器即可检查启动配置是否存在问题:

mysqld --validate-config
mysqld --defaults-file=../my.ini --validate-config

初始化数据目录

手动配置安装MySQL ,不包含数据目录,需要初始化数据目录。打开控制台窗口(或“ DOS窗口 ”)进入E:/MySQL/mysql-8.0.19-winx64/bin,执行如下命令:

mysqld --defaults-file=../my.ini --initialize --console

--defaults-file:可以指定绝对路径或相对路径;

--initialize:初始化数据目录,与--initialize-insecure不同的是--initialize包括生成随机初始的 root密码。在这种情况下,密码被标记为已过期,您将需要修改新密码。

image-20200406165129459

启动服务

首次启动,最好从控制台窗口(或“ DOS窗口 ”)中完成测试,执行以下命令:

mysqld --console

服务启动完成后,可以看下如下提示:

安装Windows服务

在Windows上,建议将其安装为Windows服务,以便在Windows开机和关机时MySQL自动启动和停止,要将MySQL安装为Windows服务,应使用具有管理员权限的帐户登录。

使用以下命令将MySQL作为服务安装,默认服务名称mysql:

mysqld --install

指定服务名MySQL 8.0:

mysqld --install MySQL-8.0

--install-manual:手动启动服务

--install:自动启动服务

如出现以下错误,请以管理员权限运行控制台窗口

image-20200406171802992

删除Windows服务

mysqld --remove MySQL-8.0
SC DELETE MySQL-8.0

初始化root密码

启动服务,如果您使用--initialize初始化数据目录,使用控制台窗口(或“ DOS窗口 ”)连接数据库:

mysql -uroot -p

输入初始化数据目录时生成的随机密码:

Enter password: (enter the random root password here)

如果不知道此密码,请查看MySQL错误日志。

如果您使用--initialize-insecure初始化数据目录,请使用 root不带密码的方式连接到服务器:

mysql -u root --skip-password

使用ALTER USER语句分配root密码:

ALTER USER '用户名'@'主机(% 任意IP)' IDENTIFIED BY 'root-password';

使用CREATE USER语句创建新账号:

CREATE USER '用户名'@'主机(% 任意IP)' IDENTIFIED BY 'root-password';

设置用户权限:

GRANT ALL PRIVILEGES ON *.* TO '用户名'@'主机(% 任意IP)'; --全库所有权限,第一个*表示库名,第二个*表示可访问的表