第二次更新Docker中安装,在这里强烈建议用Docker安装,会方便很多。
不过本文对Docker中的mysql安装只适用于开发人员。正式生产环境中还需考虑数据持久化以及定时备份的问题。
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.exe
、 KB2919355
、 KB2932046
、 KB2959977
、 KB2937592
、 KB2938439
、 KB2934018
。
其中clearcompressionflag.exe
是静默运行没有提示的,体感上感觉应该是瞬间好了。
- 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;