Linux配MySQL/MariaDB三步到位:系统包管理器安装最稳;必须运行mysql_secure_installation初始化;远程访问需检查监听状态、改bind-address、授权并设utf8mb4字符集。

直接装、能连、可访问,是 Linux 上配好 MySQL 或 MariaDB 的三个硬指标。别被“编译安装”“自定义路径”这些词吓住——90% 的实际场景,用系统包管理器装原生版本最稳,也最快。
先看系统默认给什么,再决定要不要换
不同发行版预装策略差异很大:
- RHEL 8/9、CentOS 8/9、Rocky/AlmaLinux 8+:仓库里只有 mariadb-server,MySQL 需手动加官方 YUM 源
- Ubuntu 22.04+:默认 mysql-server 包指向 MySQL 8.0
- Debian 12:default-mysql-server 实际是 MariaDB 11.0
装之前先执行 cat /etc/os-release 确认 ID 和 VERSION_ID,再选对应命令。硬要在 CentOS 8+ 上装 MySQL 官方 RPM,大概率和系统自带的 mariadb-libs 冲突,报错类似 file /usr/share/mysql/charsets/Big5.xml conflicts with package mariadb-libs。
装完必须跑安全初始化脚本
安装只是第一步,不运行 mysql_secure_installation,几乎肯定连不上:
- Ubuntu/Debian 系默认启用
auth_socket插件,root 用户无法用密码登录,报错ERROR 1698 (28000): Access denied for user 'root'@'localhost' - MySQL 8.0+ 临时密码存在
/var/log/mysqld.log中,关键词是temporary password;首次登录后必须用ALTER USER改密,不能用旧的SET PASSWORD - 脚本会引导删匿名用户、禁远程 root、清 test 库、重载权限表——跳过等于留后门
要让其他机器访问,先查监听状态再改配置
别一上来就改 bind-address。先执行:
sudo ss -tlnp | grep :3306
如果看到 *:3306,说明已监听所有接口,只需开防火墙(sudo firewall-cmd --add-port=3306/tcp --permanent && sudo firewall-cmd --reload);如果只显示 127.0.0.1:3306,才需要编辑配置文件(/etc/my.cnf 或 /etc/mysql/mariadb.conf.d/50-server.cnf),把 bind-address = 127.0.0.1 改成 0.0.0.0 或具体 IP,然后 systemctl restart mysqld(或 mariadb)。
字符集和远程授权别漏掉关键两步
中文乱码、程序连不上,常因这两处没设:
- 在
[mysqld]段加:character-set-server = utf8mb4collation-server = utf8mb4_unicode_ciinit_connect = 'SET NAMES utf8mb4' - 授权远程用户时,不能只改
user表的host字段。正确做法是:CREATE USER 'appuser'@'%' IDENTIFIED BY 'strong_pass';GRANT ALL ON mydb.* TO 'appuser'@'%';FLUSH PRIVILEGES;
MySQL 8.0+ 默认密码策略严格,测试环境如需简化,可在 [mysqld] 下加:validate_password.policy=LOWvalidate_password.length=6


















