linux安装mysql需先确认系统类型:ubuntu/debian用apt装mysql-server(服务名mysql),centos/rhel 8+须先加官方yum源再dnf装mysql-community-server(服务名mysqld);初始化后必须用临时密码登录并执行alter user改密;远程访问需同时修改bind-address为0.0.0.0、创建'root'@'%'用户并授权、开放防火墙3306端口。

MySQL 在 Linux 上安装不难,但远程访问失败几乎全是配置漏项导致的,不是版本问题,也不是权限没给够。
确认系统类型再选安装路径
Ubuntu/Debian 和 CentOS/RHEL 8+ 的包管理器、源地址、服务名都不同,混用会卡在 mysql-server 找不到或 mysqld 启动失败。别跳过这步判断:
- Ubuntu/Debian:用
apt install mysql-server,服务名是mysql,配置文件通常在/etc/mysql/mysql.conf.d/mysqld.cnf - CentOS/RHEL 8+:必须先加官方 YUM 源(
mysql80-community-release-el8-1.noarch.rpm),再用dnf install mysql-community-server,服务名是mysqld,日志默认在/var/log/mysqld.log - Alibaba Cloud Linux:需先装
compat-openssl10,否则启动报libssl.so.10: cannot open shared object file
初始化后必须改 root 密码,否则远程连不上
MySQL 5.7+ 默认生成临时密码,且首次登录后强制修改。如果跳过这步,后续任何 GRANT 或远程授权都会被拒绝,错误提示是 ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement。
操作顺序不能错:
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
- 查初始密码:
sudo grep 'temporary password' /var/log/mysqld.log(CentOS)或sudo cat /var/log/mysql/error.log | grep 'temporary'(Ubuntu) - 登录:
mysql -uroot -p,粘贴临时密码 - 立即执行:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongPass123!'; - 密码必须含大小写字母、数字、特殊字符,长度 ≥8;设太弱会报
ERROR 1819 (HY000)
bind-address 和用户 host 是远程访问的两个硬开关
只改用户权限或只改配置文件,单独做都没用。必须同时满足:
-
bind-address不能是127.0.0.1:在/etc/my.cnf或对应配置文件里找到该行,注释掉或改成0.0.0.0;改完必须重启服务(systemctl restart mysqld或systemctl restart mysql) - 用户 host 必须支持远程 IP:
root@'localhost'只能本地连;要远程,得显式创建'root'@'%'或'admin'@'192.168.1.%';执行CREATE USER 'root'@'%' IDENTIFIED BY 'YourStrongPass123!'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; - 防火墙要放行 3306:
sudo ufw allow 3306(Ubuntu)或sudo firewall-cmd --permanent --add-port=3306/tcp && sudo firewall-cmd --reload(CentOS)
远程连接时连不上?先检查这三处
常见现象是 Navicat 或 mysql -h x.x.x.x -P 3306 -u root -p 报 ERROR 2003 (HY000): Can't connect to MySQL server on 'x.x.x.x',不是密码错,而是底层通路不通:
- 确认 MySQL 进程监听的是
0.0.0.0:3306,不是127.0.0.1:3306:运行sudo ss -tlnp | grep :3306,看 Local Address 那列 - 确认 ECS 或云主机安全组已放行 3306 入方向(不只是本地防火墙);阿里云/腾讯云控制台里常被忽略
- 确认用户权限已生效:
SELECT user,host FROM mysql.user;查看是否有root对应的%行;没有就说明GRANT没执行或FLUSH PRIVILEGES漏了
最易被忽略的是:MySQL 服务重启后,bind-address 改了但没 reload 配置,或者 FLUSH PRIVILEGES 没执行——这两步缺一不可,且没有报错提示。










