记一次安装 MySQL 的过程
一直以来我用的 MySQL 都是从官网下载的zip压缩包,解压后自己配置的。但是这次安装时遇到了几个坑,特别在这里记录一下。
再次更新, 今天安装 MySQL 8.0.11 , 也记录一下安装的过程, 对文章做一下修改.
新建配置文件
自从 MySQL-5.7.18 之后官网提供的压缩包就没有 my-default.ini 的配置文件。所以需要自己新建配置文件 my.ini,放在 MySQL 的根目录下。
配置文件的内容如下:
[mysql]
# 设置 mysql 客户端默认字符集
default-character-set=utf8mb4
[mysqld]
# 设置 3306 端口
port=3306
# 设置 mysql 的安装目录
basedir=C:\Program Files\mysql-8.0.11
# 设置 mysql 数据库的数据的存放目录
datadir=C:\Program Files\mysql-8.0.11\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认 utf8
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
注意配置文件在保存时编码为 ansi,否则会报错误。(不知道是不是真的...)
添加环境变量
修改系统变量 Path,加上 MySQL 的 bin 路径,此处为 C:\Program Files\mysql-8.0.11\bin
。
安装 MySQL 的服务
以管理员权限打开cmd,进入 C:\Program Files\mysql-8.0.11\bin
目录下,输入服务安装命令:
mysqld install MySQL --defaults-file="C:\Program Files\mysql-8.0.11\my.ini"
相对应的, 卸载服务命令为
mysqld -remove
然后自动生成 root 用户,可以不带密码:
mysqld --initialize-insecure
或者带随机密码:
mysqld --initialize
随机密码被保存在错误日志里,位于(前面配置好的datadir)数据文件夹下,文件名为:主机名.err
建议用 --initialize-insecure
参数生成不带密码的 root 用户, 因为后面用客户端连接时很有可能出现caching-sha2-password
问题, 到时候还是要修改密码的. 题外话, 以前安装 MySQL 时没有理解 mysqld --initialize
的意义, 还以为是我忘记密码了, 搞得只能进安装模式重置 root 密码.
注意:如果要重新初始化,必须先清空data文件夹。
然后执行
net start mysql
无密码进入 MySQL:
mysql -u root
有密码进入 MySQL:
mysql -u root -p
遇到的坑
客户端连接如果出现 caching-sha2-password 问题
我在使用 DBeaver 连接 MySQL 时会提示 caching-sha2-password 问题,死活建立不上连接。但是我在 cmd 中又可以用密码成功登录。解决方案就是重新修改密码:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; # 更新一下用户的密码
FLUSH PRIVILEGES; # 刷新权限
提示服务已存在的错误
今天安装 8.0 正式版时提示服务已存在的错误. 我是直接手动删除以前的 MySQL 文件, 应该是没有卸载干净, 可以在 cmd 下看有没有 MySQL 的服务名.
sc query mysql
如果有,就删除它
sc delete mysql
然后再按照之前的步骤配置 MySQL.