直接用apt/yum安装mysql 8.0最省心,自动处理依赖、服务注册及selinux/apparmor策略;二进制部署必须先配好my.cnf再执行mysqld --initialize,datadir权限须为mysql:mysql且无残留文件,远程访问需同步配置bind-address、用户授权、防火墙及认证插件。

mysqld 初始化失败、mysql.service 启动报错、远程连不上、密码重置后仍被拒绝——这些问题基本都卡在安装路径选择和初始化时机上。直接用包管理器装,80% 的人能 5 分钟跑通;非要手编译或二进制部署,90% 的坑出在 --initialize 前没配好 my.cnf。
用 APT/YUM 装 MySQL 8.0(Ubuntu/CentOS 推荐)
官方仓库方式最省心,自动处理依赖、服务注册和 SELinux/AppArmor 策略适配。
- Ubuntu:先加源再装,别用系统自带的旧包
sudo dpkg -i mysql-apt-config_*.deb→ 选MySQL 8.0→sudo apt update && sudo apt install mysql-server - CentOS:用清华镜像源提速
wget https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql80-community-el7/mysql-community.repo -O /etc/yum.repos.d/mysql.repo→yum install mysql-community-server - 安装过程会弹出交互式密码设置界面;若没弹出,说明你用了
--no-install-recommends或容器环境,得手动执行sudo mysql_secure_installation
mysqld --initialize 必须在配置文件就位后运行
二进制包部署时,--initialize 是单次操作,一旦执行,datadir 就被标记为已初始化,再改 my.cnf 里的 lower_case_table_names 或 character_set_server 都无效。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 必须先写好
/etc/my.cnf,关键项包括:basedir、datadir、socket、log-error、lower_case_table_names=1(Linux 下需设为 1,否则建库失败)、character_set_server=utf8mb4 -
datadir目录权限必须是mysql:mysql,且不能有残留文件;否则mysqld会静默退出,日志里只有一行Aborting - 初始化命令示例:
/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --user=mysql --initialize
初始密码在log-error指向的文件末尾,不是 stdout 输出
远程访问和认证插件不兼容是高频故障点
MySQL 8.0 默认用 caching_sha2_password,老客户端(如 Navicat 12 以下、某些 PHP 扩展)连不上,错误通常是 Authentication plugin 'caching_sha2_password' cannot be loaded。
- 临时解决:登录后执行
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_pass';
再FLUSH PRIVILEGES; - 永久方案:在
my.cnf的[mysqld]段加一行default_authentication_plugin=mysql_native_password - 开远程访问别只改
bind-address:还要执行CREATE USER 'root'@'%' IDENTIFIED BY 'xxx'; GRANT ALL ON *.* TO 'root'@'%'; FLUSH PRIVILEGES;
并确认防火墙放行3306(sudo ufw allow 3306或sudo firewall-cmd --add-port=3306/tcp --permanent)
systemd 服务注册容易漏掉 reload 步骤
二进制部署后复制 mysql.server 到 /etc/systemd/system/mysqld.service,很多人忘了让 systemd 重新读取配置。
- 正确流程:
sudo cp support-files/mysql.server /etc/systemd/system/mysqld.servicesudo systemctl daemon-reloadsudo systemctl enable --now mysqld - 如果
systemctl start mysqld报Failed to start mysqld.service: Unit mysqld.service not found,99% 是没执行daemon-reload - 检查状态别只看
active (running),要sudo journalctl -u mysqld -n 50 -f看实时日志,mysqld启动失败几乎从不报错到终端,全在 journal 里
最常被跳过的动作:改完 my.cnf 没重启服务、初始化前没清空 datadir、远程授权没刷权限、firewalld 没 reload。这些步骤不耗时,但漏一个,后面两小时都在查日志。










