如何确认 Linux 系统已安装 MySQL 或 MariaDB
很多用户直接运行
mysql --version却得到
command not found,其实是因为系统可能预装了
mariadb(尤其 CentOS 8+/AlmaLinux/RHEL 8+),而它和 MySQL 不完全兼容。先执行:
which mysql和
rpm -qa | grep -i mysql(RPM 系统)或
dpkg -l | grep -i mysql(Debian/Ubuntu)。若返回空,说明未安装;若看到
mariadb-libs或
mariadb-server,要特别注意后续是否需卸载冲突包。
使用官方 APT/YUM 源安装 MySQL 8.0(推荐方式)
不建议用系统默认源(如 Ubuntu 的
apt install mysql-server安装的是 MariaDB;CentOS 8+ 默认无 MySQL 包)。应添加 MySQL 官方仓库: Ubuntu/Debian:下载
mysql-apt-config_*.deb,用
sudo dpkg -i安装后会自动配置源,再
sudo apt update && sudo apt install mysql-serverRHEL/CentOS/AlmaLinux:下载
mysql80-community-release-*.rpm,执行
sudo rpm -Uvh,然后启用 8.0 仓库:
sudo yum-config-manager --enable mysql80-community(RHEL 8+ 用
dnf),最后
sudo dnf install mysql-community-server关键点:安装后服务名是
mysqld(不是
mysql),启动命令为
sudo systemctl start mysqld
首次启动后必须执行 mysql_secure_installation
MySQL 8.0 默认生成临时 root 密码,存于
/var/log/mysqld.log中,用
sudo grep 'temporary password' /var/log/mysqld.log提取。但仅改密码不够——
mysql_secure_installation会强制处理几个关键风险: 移除匿名用户(
root@localhost以外的空用户名) 禁用远程 root 登录(只保留
root@localhost) 删除
test数据库及关联权限 重载权限表(
FLUSH PRIVILEGES) 注意:该脚本不修改默认认证插件,MySQL 8.0 默认用
caching_sha2_password,旧客户端连接会报
Authentication plugin 'caching_sha2_password' cannot be loaded,需在创建用户时显式指定
mysql_native_password
验证端口、防火墙与 socket 连接是否就绪
常见“连不上”问题往往卡在底层通信层:
检查 MySQL 是否监听3306:
sudo ss -tlnp | grep :3306(输出应含
mysqld进程) 若需远程访问,确保
bind-address在
/etc/my.cnf或
/etc/mysql/mysql.conf.d/mysqld.cnf中设为
0.0.0.0(或注释掉该行),且重启服务 开放防火墙:
sudo ufw allow 3306(Ubuntu)或
sudo firewall-cmd --permanent --add-port=3306/tcp(RHEL/CentOS) 本地 socket 连接失败?检查
socket路径是否一致:
mysql --socket=/var/lib/mysql/mysql.sock -u root -p,路径以
mysqld --verbose --help | grep socket输出为准
配置文件加载顺序、SELinux 策略、AppArmor 限制都可能静默拦截连接,遇到异常先查
journalctl -u mysqld -n 50 --no-pager。
