mysql如何安装并配置mysql8_mysql新特性设置与优化

来源:这里教程网 时间:2026-02-28 20:52:27 作者:

MySQL 8.0 安装后必须立即执行的初始化操作

跳过这步会导致后续无法登录、权限混乱,甚至

root@localhost
账户被锁定。安装完 MySQL 8.0(尤其是通过官方
mysql-installer
apt
/
brew
安装)后,不要直接尝试用
mysql -u root -p
登录
——默认 root 密码不是空,也不是随机生成并打印在终端,而是由
mysqld --initialize
写入错误日志或临时文件。

实操建议:

Linux/macOS:检查
/var/log/mysqld.log
/usr/local/mysql/data/*.err
,搜索
A temporary password is generated
找到初始密码
Windows:查看
C:\ProgramData\MySQL\MySQL Server 8.0\Data\*.err
(注意
ProgramData
是隐藏目录)
首次登录后立刻执行:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongPass123!';
如果跳过初始化直接启动服务,可能触发
ERROR 1045 (28000): Access denied
,此时需临时跳过权限验证重启:
mysqld --skip-grant-tables --skip-networking
,再手动更新
mysql.user

MySQL 8.0 默认身份验证插件导致客户端连接失败

MySQL 8.0 默认使用

caching_sha2_password
插件,而老版本客户端(如 MySQL Workbench 6.x、Navicat 旧版、PHP 7.2 以下 mysqli 扩展)不支持,会报错
Client does not support authentication protocol requested by server

解决方法取决于你是否能升级客户端:

兼容旧客户端:创建用户时显式指定插件:
CREATE USER 'appuser'@'%' IDENTIFIED WITH mysql_native_password BY 'pass';
全局降级(不推荐生产):
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'pass';
,并修改
my.cnf
中的
default_authentication_plugin=mysql_native_password
确认当前用户插件:
SELECT user, host, plugin FROM mysql.user;
注意:JDBC 连接需加参数
?serverTimezone=UTC&allowPublicKeyRetrieval=true&useSSL=false
,否则即使插件正确也可能握手失败

MySQL 8.0 的不可见索引与降序索引怎么用才不踩坑

这两个是 8.0 新增的实用特性,但容易误用或忽略限制。

不可见索引(Invisible Index)

用于灰度下线索引:执行
ALTER TABLE t1 ALTER COLUMN idx_name INVISIBLE;
,优化器将忽略它,但索引仍被维护(写入开销不变)
不能对主键或唯一约束索引设为不可见;也不能对全文索引、空间索引设为不可见 查看是否可见:
SELECT INDEX_NAME, IS_VISIBLE FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 't1';

降序索引(Descending Index)

支持混合排序:
CREATE INDEX idx ON t1 (a ASC, b DESC, c ASC);
,可覆盖
ORDER BY a, b DESC, c
查询
注意:MySQL 8.0 仅在
utf8mb4_0900_as_cs
等新排序规则下才真正按字节降序存储;老排序规则(如
utf8mb4_general_ci
)实际仍是升序构建,只是优化器“假装”支持
执行
SHOW CREATE TABLE t1
可确认索引定义中是否含
DESC

performance_schema 和 sys schema 在 8.0 中的默认启用差异

MySQL 8.0 默认开启更多监控项,但部分配置项行为变更,容易引发性能误判或查询超时。

关键点:

performance_schema
默认启用(
performance_schema=ON
),且新增了
wait/lock/metadata/sql/mdl
等等待事件,但采集粒度变细,高并发下自身开销上升约 5–10%
sys
schema 默认启用,但其视图依赖
performance_schema
,若手动关闭后者,
sys
视图将返回空或报错
Table performance_schema.xxx doesn't exist
常见误操作:为“提升性能”盲目关闭
performance_schema
,结果导致慢查询无法归因、锁等待无法分析;应优先调整采集开关,如:
UPDATE performance_schema.setup_consumers SET ENABLED = 'NO' WHERE NAME LIKE 'events_waits%';
8.0 中
sys.schema_table_statistics_with_buffer
替代了旧版的
schema_table_statistics
,新增了缓冲池读取统计,但需确保
innodb_buffer_pool_size
已合理设置,否则该视图数据无意义

真正影响线上稳定性的,往往不是新功能多炫酷,而是默认值变了、插件换了、日志位置藏得更深了——这些细节不查文档、不看错误日志,光靠“照着教程敲”基本必挂。

相关推荐