Windows下安装部署Mysql8.x(含Docker方案)

第二次更新Docker中安装,在这里强烈建议用Docker安装,会方便很多。
不过本文对Docker中的mysql安装只适用于开发人员。正式生产环境中还需考虑数据持久化以及定时备份的问题。


docker下安装
windows下安装


docker下安装

  • 安装Docker Desktop
    https://www.docker.com/products/docker-desktop
    一路按照步骤安装,这个网上教程很多,在此不再赘述。

  • 拉取mysql镜像

docker pull mysql

这里可以根据实际情况选择mysql版本,如果不额外注明,则默认是lastest(最新)
而且docker中支持管理不同版本的镜像,如你已经有了一个lastest的mysql,再拉一个5.7的mysql也是可以的。
如下图:


  • 启动docker镜像
docker run --name mysql --restart=always -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql

在这里MYSQL_ROOT_PASSWORD设置的是root账户的密码,最后-d mysql为选择镜像,若要选择5.7版本的mysql则为-d mysql:5.7.29
-p 3306:3306第一个3306是宿主机的端口,第二个3306是容器内部的端口。

下图就可以看到,我起了2个不同版本的mysql,最新版启动在3306,5.7版本启动在3307。


windows下安装

  • 下载VC++库
    https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads
    然后VC++库的安装就不说了,直接下完了安装就行。

这里说下安装vc时候0x80240017 - 未指定的错误的解决方案:
我的环境是Winserver 2012 R2 Standard,主要参考了这篇文章:https://blog.csdn.net/yiyihuazi/article/details/78410667
首先安装KB2919442
安装KB2919355
其中KB2919355中有好几个包,安装顺序如下:
clearcompressionflag.exeKB2919355KB2932046KB2959977KB2937592KB2938439KB2934018
其中clearcompressionflag.exe是静默运行没有提示的,体感上感觉应该是瞬间好了。

  • 下载Mysql
    https://dev.mysql.com/downloads/mysql/

  • Mysql解压
    解压下载好的Mysql压缩包,如D:\mysql-8.0.17-winx64 (注意路径中不能有中文和空格)
    新建data文件夹和my.ini文件

    my.ini内容:
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=D:\\mysql-8.0.17-winx64
# 设置mysql数据库的数据的存放目录
datadir=D:\\mysql-8.0.17-winx64\\data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8

以管理员身份打开cmd,进入D:\mysql-8.0.17-winx64\bin路径

  • 执行初始化命令
    mysqld --initialize --user=mysql --console
    会生成一个初始的密码,第一次登陆会用到
  • mysql服务安装
    mysqld install
  • mysql服务启动
    net start mysql
  • 登陆mysql
    mysql -uroot -p
    这个时候提示需要输入密码,用之前初始化生成的默认密码登陆
  • 修改初始密码
ALTER USER root@localhost IDENTIFIED BY '123456';
  • 赋予远程登陆权限
use mysql
update user set host = '%' where user ='root';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

你可能感兴趣的:(Windows下安装部署Mysql8.x(含Docker方案))